Marklogic xdmp.rollback() :无法读取 null 的 属性 'result'

Marklogic xdmp.rollback() : Cannot read property 'result' of null

我试图了解 ServerSide 中的回滚功能 JavaScript。我是 运行 下面的 JavaScript 查询,这是我从 xdmp.rollback() 的 MarkLogic 文档中得到的,我得到的错误是

[javascript] TypeError: Cannot read property 'result' of null.

查询:

declareUpdate({explicitCommit: true});
xdmp.documentInsert("/docs/first.json", {"first": 1});
xdmp.documentInsert("/docs/second.json", {"second": 2});
xdmp.rollback();

结果:

[javascript] TypeError: Cannot read property 'result' of null

而我尝试了 运行 XQuery 回滚函数 xdmp:rollback(),它工作正常而不会引发错误。这是什么原因?

代码示例确实有效。如果执行它,您会注意到那些文档没有插入到数据库中。您可以添加一些诊断 xdmp.log() 消息并在 ErrorLog 中查找它们以证明它正在执行您的代码。

当通过查询控制台执行代码时,eval 执行的结果似乎不是 complete/expected 有效负载。

When a transaction is rolled back, the current statement immediately terminates, updates made by any statement in the transaction are discarded, and the transaction terminates.

The result of a statement terminated with xdmp:rollback is always the empty sequence.

因此,评估响应不是返回带有 result 属性 的响应对象,而是 null,并尝试访问 result 属性 导致异常冒泡。

如果执行以下代码:

declareUpdate({explicitCommit: true});
xdmp.commit();

向查询控制台返回如下响应:

{
 "elapsedCurrent":0.605, 
 "elapsedDiff":-0.307, 
 "isSequence":false, 
 "resultCount":1, 
 "results":[{"type":"Null", "result":"null"}]
}

但是当从 xdmp.rollback() 页面执行示例代码时,会返回以下响应,您看到的是查询控制台结果面板中显示的 errorcode

{
  "error":{
    "evalinfo":"query evaluated as JavaScript", 
    "errorcode":"[javascript] TypeError: Cannot read property 'result' of null", 
    "stacktrace":{"stack":[]}
  }
}