MongoDB:验证文档未更新

时间:2016-09-06 06:28:27

标签: mongodb

我们想在我们当前的项目中应用一些审核。为此,我们创建了一个场景,但我不知道如何使点 1 2 原子。

方案

每个文档都必须有一个timestamp服务器 作为一个版本。保存文档时,我们将:

  1. 验证文档未更改首先比较最新文档timestamps的{​​{1}} 使用我们要存储的文档docLatestdocUpdated必须相等。
    • 如果没有,则拒绝保存请求。
    • 如果没问题,请转到下一点。
  2. 更新文档
  3. 使用以前的文档创建差异 - 最新文档必须是我们的最后一个 文献。我们将创建一个diff并存储它。

1 个答案:

答案 0 :(得分:1)

我偶然发现了这个想法。我的想法将使用long_polling技术。我不会告诉您如何构建数据,但您可以将日期转换为数值,并通过它进行比较。

对于1和2,您可以将Date-format转换为数字,架构将如下所示:

var document= { 
   updatedAt: { type: Number, default: Date.parse(new Date()) } 
 }

然后对于客户提交的每个文件,只需检查,如果

if(latestDocument.updatedAt - prevDocument.updatedAt > 0) {
   //if latest's timestamp is bigger than prev, then store it in mongodb

} else {
  //if latest document is the same or even older, just ignore this document
}

代表3号。我发现,如果文档发生了变化,你甚至需要区分吗?我决定遵循react / flux的方法,如果文档已更改,则只更换整个文档。