最小验证不适用于Mongoose

Shr*_*ran 0 mongoose mongodb node.js

我有一个Schema,其中的balance字段声明如下所示

balance: {
    type: Number,
    min: 0,
    default: 30
}
Run Code Online (Sandbox Code Playgroud)

我将0设置为最小值,以便余额不是负值.但是当我通过更新查询减少余额值时,余额结果为负值.

我的更新查询:

User.update({
    _id: mongoose.Types.ObjectId(id)
}, {
    $inc: {
        balance: -10
    }
}, function(error, result) {
    // code
});
Run Code Online (Sandbox Code Playgroud)

我在代码中犯了什么错误吗?

Cam*_*amo 5

默认情况下,mongoose不会在更新调用上进行验证,但是有一个选项.查看mongoose文档:http://mongoosejs.com/docs/validation.html(更新验证器)

var opts = { runValidators: true };
Toy.update({}, { color: 'bacon' }, opts, function (err) {
  assert.equal(err.errors.color.message,
    'Invalid color');
});
Run Code Online (Sandbox Code Playgroud)