用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证
var mongoose = require(‘mongoose‘)
var UserSchema = mongoose.Schema({
name: {
type: String, // 指定类型
trim: true, // 修饰符,去除左右空格
required: true, // 表示必须传入
validate(name) { // 自定义校验器
return name.length >= 2
}
},
sn: {
type: String,
index: true, // 索引
set(val) { // 自定义修饰符
return val
},
minlength: 10, // 最小长度
maxlength: 30, // 最大长度
match: /^sn(.*)i/ // 正则:要求必须以sn开头,忽略大小写
},
age: {
type: Number,
min: 0, // 最小值
max: 150, // 最大值
},
status: {
type: Number,
default: 1, // 默认值
enum: [0, 1, 2, 3] // status的值必须在枚举的数组中
}
})
module.exports = mongoose.model(‘Users‘, UserSchema, ‘users‘)
var OrderModel = require(‘./model/order‘)
// 查询order表中每个订单的商品
OrderModel.aggregate([
{
$lookup: {
from: ‘order_item‘, // 表示被关联的表
localField: ‘order_id‘, // 关联条件
foreignField: ‘order_id‘,
as: ‘items‘ // 将查询到的数据放入items
}, {
$match: { ‘all_price‘: { $gte: 90 } } // 表示条件为all_price>=90
}
}
], (err, docs) => {
if (err) return console.log(err)
console.log(JSON.stringify(docs))
})
/* 查询order_item找出商品名称是酸奶的商品,对应的订单的订单号,以及订单的总价 */
var OrderItemModel = require(‘./model/order_item‘)
var OrderModel = require(‘./model/order‘)
var mongoose = require(‘mongoose‘)
// 方法一:
OrderItemModel.find({‘_id‘: ‘5eff4d743dd01fc7bce3b2bb‘}, (err, docs) => {
console.log(docs)
var order_item = JSON.parse(JSON.stringify(docs))
var order_id = docs[0].order_id
OrderModel.find({‘order_id‘: order_id}, (err, docs) => {
order_itme[0].order_info = docs[0]
console.log(order_item)
})
})
// 方法二:
// mongoose中获取ObjectId:mongoose.Types.ObjectId
OrderItemModel.aggregate([
{
$lookup: {
from: ‘order‘, // 表示被关联的表
localField: ‘order_id‘, // 关联条件
foreignField: ‘order_id‘,
as: ‘order_info‘, // 将查询到的数据放入order_info
}
}, {
$match: {_id: mongoose.Types.ObjectId(‘5eff4d743dd01fc7bce3b2bb‘)}
}
], (err, docs) => {
console.log(JSON.stringify(docs))
})
原文:https://www.cnblogs.com/tangyun1992/p/13468784.html