我可以设置超出枚举数组的值,我不知道为什么mongoose不验证值,我是否以错误的方式更新枚举?
我的代码:
var OrderSchema = new mongoose.Schema({
status:{type:String,enum:['created','shipped','confirmed']},
)};
var changeOrderStatus = function(shopId,orderId,status,callback){
Order.update({_id:orderId,shop:shopId},{$set:{status:status}},{upsert:false},
function(err){
console.log(err);
callback(err);
})
}
Run Code Online (Sandbox Code Playgroud)
该状态枚举应该只有三个值:["创造","运","证实"]
但我能做到:
4.0版本之前的猫鼬不支持架构像静态方法的验证.update,.findByIdAndUpdate,.findOneAndUpdate.
但它支持实例方法 document.save()
首先,您需要找到一个订单,然后更改您想要的房产并致电.save().像这样:
Order.findOne({ _id: orderId, shop: shopId }, function(err, order) {
order.status = 'foo';
order.save(function(err, savedOrder) {
// ERROR HERE
})
})
Run Code Online (Sandbox Code Playgroud)
如果您使用Mongoose 4.0,则在更新调用中包含该选项时,它支持Schema.update对$set和$unset运算符字段进行验证runValidators: true.
所以你的更新将如下所示:
Order.update(
{ _id: orderId, shop: shopId },
{ $set: { status: status }},
{ upsert: true, runValidators: true }, function(err) {
console.log(err);
callback(err);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |