验证数组内容猫鼬模型

Posted

技术标签:

【中文标题】验证数组内容猫鼬模型【英文标题】:validate array content mongoose model 【发布时间】:2017-06-30 00:20:10 【问题描述】:

我有一个像这样的猫鼬模型

   valid_days: 
    type: [Number]
  ,

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

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

或者这些的组合,比如

[1,3,5]

我怎么能用猫鼬做到这一点?

【问题讨论】:

【参考方案1】:

您可以使用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");
);

【讨论】:

非常感谢!正是我需要的!

以上是关于验证数组内容猫鼬模型的主要内容,如果未能解决你的问题,请参考以下文章

在角度视图中注入猫鼬模型验证

打字稿模型添加猫鼬身份验证

验证多个猫鼬文档并更新

猫鼬 - 如何仅验证特定字段?

如何验证猫鼬模式的动态密钥

检查猫鼬验证错误的最佳方法