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("....")} // 筛选条件
}
]);