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

标签 node.js mongoose

也许我的问题很简单,但我没有找到解决方案。 我想限制 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/

相关文章:

node.js - NodeJS 中 BSON 对象的 console.log

javascript - 如何将 mongoose ObjectId 数组转换为字符串数组?

javascript - Node.js:从 Mongoose 查询返回正确的 JSON

mongodb - 如何在 Mongoose 中使用 collection.insert() 插入自定义 ObjectId

node.js - Angular.js/D3.js/Node.js 之间有什么区别和相似之处

web-services - 在nodejs中创建一个简单的Web服务

javascript - 如何在循环运行函数的 SQL Server 中插入对象? ConnectionError : . 无法在处于 `Connecting` 状态的连接上调用 connect

node.js - 谷歌云功能不会终止过去的最大功能持续时间

javascript - Route.get() 需要回调函数,但修改服务器路由后得到一个 [object Undefined]

node.js - 如何访问文本分数 MongoDB $文本搜索