Mongoose没有使用内置验证器验证模型

时间:2014-05-05 23:46:07

标签: node.js mongodb mongoose database

我正在运行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);)时,我获得了成功。查询数据库确认允许插入文档。

我是这个生态系统的新手,所以任何建议都会受到赞赏。谢谢!

1 个答案:

答案 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);
  });
});