MarkLogic node.js - 使用除versionId

时间:2017-09-08 08:53:56

标签: marklogic

我使用的是ML8和Node.js.这里的文档:http://docs.marklogic.com/guide/node-dev/documents#id_68765描述了如何使用versionId字段在ML中进行条件更新。

但是,例如,如果我想在不同的字段上进行条件更新,是否可能?

我的场景是:我有JSON文档,其中包含赋值为assign和assignDate(每次将新值设置为assignedTo时,assignDate都设置为当前日期)

现在,我的"分配"操作,我想确保在我读取文档和执行更新之间没有其他人更改了assignedTo / assignDate字段。我不在乎同一文档中的其他字段是否已更新 - 如果其他字段已更新,我仍然可以继续使用Assign操作(因此我无法使用versionId方法,因为它涵盖整个文档)

如何做到这一点?

1 个答案:

答案 0 :(得分:2)

乐观锁定不会查看文档的内容。相反,版本ID是反映文档时间戳的系统值。检查时间戳比读取文档内容更有效。

您可以编写

的POST资源服务扩展
  • 收到更新内容
  • 读取文档并检查assignTo / assignDate是否未更改
  • 使用更新内容
  • 在文档的根目录上执行xdmp:node-replace()

希望有帮助,