也许我的问题很简单,但我没有找到解决方案。 我想限制 mongodb 中对象 ID 数组的大小。我正在使用 Mongoose 。
如何使用 Mongoose 模式做到这一点?
或者我想到的解决方案是首先检索文档,然后计算数组的大小,然后如果发生验证失败错误,则将验证失败错误返回给最终用户。
请帮我找到更好的解决方案。
最佳答案
Mongoose 中没有这样的东西,但您可以定义自己的验证。根据Mongoose documentation ,你可以这样做:
var userSchema = new Schema({
phone: [{
type: ObjectId,
validate: {
validator: function() {
return this.phone.length <= 100;
},
message: 'Array exceeds max size.'
}
}]
});
对于数组,将为每个元素调用验证器函数,并将该元素作为参数。但您可以检查属性的长度而不是验证元素。
当您使用 save
方法更新模型实例时,这将起作用。使用 User.update
时不会运行验证器。
关于node.js:使用 mongoose 限制 mongodb 中数组包含的对象 ID 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35217837/