node.js:使用mongoose限制数组在mongodb中包含的对象ID的数量

可能是我的问题是如此简单,但我找不到解决scheme。 我想在mongodb中限制对象ID数组的大小。 我正在使用mongoose。

如何使用mongoose模式做到这一点?

或者我在想的解决scheme是首先检索文档,然后计算数组的大小,然后在最终用户发生validation失败错误后返回。

请帮我find更好的解决scheme。

在Mongoose中没有这样的事情,但是你可以定义你自己的validation。 根据Mongoose的文档 ,你可以这样做:

var userSchema = new Schema({ phone: [{ type: ObjectId, validate: { validator: function() { return this.phone.length <= 100; }, message: 'Array exceeds max size.' } }] }); 

对于一个数组,每个元素都以参数的forms调用validator函数。 但是您可以检查属性的长度而不是validation元素。

当你使用save方法更新你的模型实例时,这将起作用。 使用User.update时,validation程序不运行。