验证数组内容mongoose模型

时间:2017-02-11 18:55:03

标签: arrays validation mongoose schema

我有像这样的猫鼬模型

name + "." + format

但我想验证数组是否与以下示例匹配:

   valid_days: {
    type: [Number]
  },

或其中的某些组合,例如

[1,2,3,4,5,6,7]

我怎么能用mongoose做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用mongoose custom validators并仅验证数组中的某些值:

var possibilities = [1, 2, 3, 4, 5, 7];

var testSchema = new mongoose.Schema({
    valid_days: {
        type: [Number],
        validate: {
            validator: function(value) {
                for (var i = 0; i < value.length; i++) {
                    if (possibilities.indexOf(value[i]) == -1) {
                        return false;
                    }
                }
                return true;
            },
            message: '{VALUE} is not a valid day'
        }
    },
});

对于这个例子:

Test.create({ "valid_days": [1, 3, 5, 6] }, function(err, res) {
    // this trigger error : 6 not in possibilities array
    if (err)
        console.log(err);
    else
        console.log("OK");
});

Test.create({ "valid_days": [1, 3, 5] }, function(err, res) {
    // ok 1,3,5 are in possibilities array
    if (err)
        console.log(err);
    else
        console.log("OK");
});