mongoose链接操作数据库

1.连接数据库

import * as mongoose from 'mongoose';
mongoose.connect(uri, options);
mongoose.connection.on('connected', () => {
      Logger.info(`数据库连接成功 -  ${uri}`);
    });

2.设置Schema

import * as mongoose from 'mongoose';
import * as paginate from 'mongoose-paginate';

const HotRecommendSchaema = new mongoose.Schema({
  name: { type: String ,set(val){
		// 拦截这个字段的数据可以进行需要的修改操作
		return "001"+name;
	}},
  author: { type: String },
  // 简介
  content: { type: String },
  // 封面
  cover: { type: String, default: '' },
  // 下面字段里都是验证
  test: {
	type: any,
	default: '',
	required: true,//必填
	max: 20,//用于Number,最大值
	min: 10,//用于Number,最小值
	enum: ["a","b","c"],//枚举,所传值只能是数组里面的,用于String
	match: /^nb(.*)/,//正则验证,以"nb"开头
	maxlength: 20, // 字符串长度
	minlength: 10
  },
  // 0不展示,1展示
  state: { type: Number, default: 0 },
  // 0不删除,1删除
  delete: { type: Number, default: 0 },
  // 创建时间
  create_at: { type: Date, default: Date.now },
  // 最后修改日期
  update_at: { type: Date }
}, {
  // 增加自动时间戳
  timestamps: { createdAt: 'created_at', updatedAt: 'update_at' }
});

// 自定义方法,由Schaema直接调用
HotRecommendSchaema.statics.findByName = name => {
	
}


// 翻页 
HotRecommendSchaema.plugin(paginate);
// 监听save方法,上面已经定义了默认值,这个可以不加
HotRecommendSchaema.pre('save', function (next) {
  this.create_at = new Date();
  next();
});
// export
/*
	第一个参数数据库名称
	第二个是上面定义
	第三个是表名,可以不定义
*/
export default mongoose.model('HotRecommend', HotRecommendSchaema);

3.操作(数据)

多表关联

// 订单表
import OrderModel from "./OrderModel";
// 表关联查询操作
const ones = OrderModel.aggregate([
	{
		$lookup:{
			from: "order_item",//查询的表名
			localField: "order_id",//根据字段
			foreignField: "order_id",//查询的字段
			as: "items"//放入到哪个字段
		}
	},
	{
		$limit: 10 // 限制搜索条数
	},
	{
		$skip: 100 // 跳过条数
	}
	{
		$match: {_id: mongoose.Types.ObjectId("....")} // 筛选条件
	}
]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值