Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js:使用mongoose限制mongodb中数组包含的对象ID数_Node.js_Mongoose - Fatal编程技术网

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

node.js:使用mongoose限制mongodb中数组包含的对象ID数,node.js,mongoose,Node.js,Mongoose,也许我的问题很简单,但我没有找到解决办法。 我想限制mongodb中对象ID数组的大小。我在用猫鼬 如何使用mongoose模式实现这一点 或者,我想的解决方案是首先检索文档,然后计算数组的大小,然后在出现验证失败错误时将其返回给最终用户 请帮我找到更好的解决方案。Mongoose中没有这种东西,但您可以定义自己的验证。根据,您可以这样做: var userSchema = new Schema({ phone: [{ type: ObjectId, validate: {

也许我的问题很简单,但我没有找到解决办法。 我想限制mongodb中对象ID数组的大小。我在用猫鼬

如何使用mongoose模式实现这一点

或者,我想的解决方案是首先检索文档,然后计算数组的大小,然后在出现验证失败错误时将其返回给最终用户


请帮我找到更好的解决方案。

Mongoose中没有这种东西,但您可以定义自己的验证。根据,您可以这样做:

var userSchema = new Schema({
  phone: [{
    type: ObjectId,
    validate: {
      validator: function() {
        return this.phone.length <= 100;
      },
      message: 'Array exceeds max size.'
    }
  }]
});
var userSchema=新模式({
电话:[{
类型:ObjectId,
验证:{
验证器:函数(){

返回this.phone.length,正如我所说,我有一个对象ID数组。用户最多可以在其中存储3个ID。他可以一次发送0,1个或更多ID。将ID添加到数组是另一个api调用,因此我想声明他不能在数组中存储超过3个ID。执行此操作的最有效方法是什么?请参阅我的编辑以检查属性的属性长度。我不知道这是否是最有效的方法,但它看起来很简单。但我在问题和评论中忘了提到一个转折点,即如果用户添加了一个id,他可以再次使用相同的api添加更多id。这是我面临的真正问题。如果您继续使用
保存
方法进行更新,验证程序唯一的问题是如果您使用
update
,在这种情况下,我无能为力。