gpt4 book ai didi

javascript - MongooseJS - 限制子文档中的文档数量

转载 作者:可可西里 更新时间:2023-11-01 09:39:09 25 4
gpt4 key购买 nike

我想知道是否有办法限制(子)文档中的元素数量。在我的应用程序中,可以使用 ajax 将元素添加到子文档,因此防止恶意用户添加大量可笑的条目很重要。

我能想到一种方法,就是查询父文档,检查子文档中的元素个数,如果小于X,就保存。然而,这需要查询整个文档,只是为了更新一点点。我更愿意用 update() 做所有事情,而不是 findOne() 和 save()。有办法吗?

编辑:更新前无需数据库查询即可完成。我不知道是否可以用子文档来做,我用一个普通对象做的。只需将您的数据存储在数组或更好的经典对象中。然后在更新之前,验证 key 编号,如果 key 编号大于允许的 - 忽略它。 Ofc 如果处理一个对象,首先检查键是否是一个数字。

最佳答案

您可以使用自定义 validate 函数在 Mongoose 中设置数组限制,例如:

validate: [v => v.length <= MAX, 'message']

其中 MAX 是元素的最大数量,'message' 是验证失败时显示的消息。见:

http://mongoosejs.com/docs/api.html#schematype_SchemaType-validate

但是您不能对 MongoDB 发出一个请求,如果数组太长,该请求就会失败,因为 MongoDB 没有架构的概念,而执行您想要的操作将需要它。模式仅存在于 Mongoose 中。

所以如果你想直接使用 MongoDB 那么你不仅不能在一个请求中完成它,实际上比那更糟糕 - 你也无法消除竞争条件,因为 MongoDB 不支持事务,所以你不能真正保证永远不会超过您的限制。

关于javascript - MongooseJS - 限制子文档中的文档数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com