Node.js Mongoose版本控制问题:如何处理rapid fire请求(例如,从文档中的数组中删除一组项)

Node.js Mongoose版本控制问题:如何处理rapid fire请求(例如,从文档中的数组中删除一组项),node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,在特定的场景中,当我们的用户从文档中删除一堆标记时,我们会从Mongoose中得到一堆VersionErrors,并且这些操作显然没有全部完成。只是想弄清楚如何避开这件事/确保它不会发生。开放数据结构中的体系结构更改 以下是场景: 我们有一个叫做Ask的模型: var AskSchema = new Schema({ ... _tags: [{type: Schema.Types.ObjectId, ref: 'Tag'}], created_at: {type: Date, d

在特定的场景中,当我们的用户从文档中删除一堆标记时,我们会从Mongoose中得到一堆VersionErrors,并且这些操作显然没有全部完成。只是想弄清楚如何避开这件事/确保它不会发生。开放数据结构中的体系结构更改

以下是场景:

我们有一个叫做Ask的模型:

var AskSchema = new Schema({
...
    _tags: [{type: Schema.Types.ObjectId, ref: 'Tag'}],
    created_at: {type: Date, default: Date.now, required: true},
    updated_at: {type: Date, default: Date.now, required: true}
}
在我们的界面上,我们显示与用户正在查看的特定Ask关联的标记模型列表,用户可以添加新标记或删除现有标记

如果用户同时删除4-5个标记,我们会向服务器发送4-5个单独的HTTP DELETE请求,每个请求都会尝试从
\u tags
数组中删除该ID

这就是VersionError发生的地方,这正是Mongoose的版本控制系统应该做的

问题是:为了避免这种情况,我应该从前端还是后端做些什么。我目前的想法是:

  • 在前端排队处理请求(有点烦人,但也有可能)
  • 创建一个名为AskTag的“关系”模型,该模型只包含
    \u ask
    \u tag
    ,以维护这些关系(闻起来非常SQLy)
  • 发生版本错误时重新获取文档,然后再次应用
    ask.\u tags.pull(tagId)

  • 我是否遗漏了任何解决方案?这里的最佳实践是什么?

    您将什么作为输入传递给HTTP Delete请求?它是一个REST端点。没有正文,直接删除//询问//标记即可/