我正在运行Mongoose 3.8.8,并且无法尝试让它对我的模型属性强制执行内置验证规则。
我有以下内容:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Drink Schema
*/
var DrinkSchema = new Schema({
name: {type: String, required: "{PATH} is required."},
description: String,
sku: {type: String, required: "{PATH} is required."},
contains: String,
count: { type: Number, min: 0 }
});
mongoose.model('Drink', DrinkSchema);
当我插入含有负数的饮料(通过Drink.update({sku:sku}, {name:name, count: -1}, {upsert:true}, callback);
)时,我获得了成功。查询数据库确认允许插入文档。
我是这个生态系统的新手,所以任何建议都会受到赞赏。谢谢!
答案 0 :(得分:1)
验证是内部middleware,不会在Model.update
上调用。如果要在更新时运行验证,则需要查找文档,更新属性并保存。就像documentation:
Tank.findById(id, function (err, tank) {
if (err) return handleError(err);
tank.size = 'large';
tank.save(function (err) {
if (err) return handleError(err);
res.send(tank);
});
});