JavaScript在MarkLogic中调用事务

问题描述 投票:1回答:1

我有一个xml文档。

<product-inventory>
  <product>
    <name>shoe</name>
    <price>100</price>
    <date>2020-05-31</date>
  </product>
  <product>
   <name>dress</name>
    <price>100</price>
    <date>2020-06-01</date>
  </product>
  <product>
   <name>dress</name>
    <price>200</price>
    <date>2020-06-02</date>
  </product>
</product-inventory>

我写了一个程序来更新第二个 价钱 元素,审核这样的更新,最后检索更新后的文档,这个程序包含三个功能。当程序到达最后的检索步骤时,我仍然可以看到旧的文档,如果我打开另一个窗口,我确实可以看到更新的文档。 如果我打开另一个窗口,我确实看到了更新的文档。

<product-inventory>
  <product>
    <name>shoe</name>
    <price>100</price>
    <date>2020-05-31</date>
  </product>
  <product>
   <name>dress</name>
    <price>700</price>
    <date>2020-06-01</date>
    <audit>
      <modifiedBy>admin</modifiedBy>
      <modifiedDate>2020-06-02T16:12:14.9664853-04:00</modifiedDate>
    </audit>
  </product>
  <product>
   <name>dress</name>
    <price>200</price>
    <date>2020-06-02</date>
  </product>
</product-inventory>

功能的要点。

function  updateDoc() {
**************
   xdmp.nodeReplace(
**************
};

function auditHistory() {
*********************
   xdmp.nodeInsertAfter(
*********************
};

function retrieveDoc() {
  return fn.collection('product')
};

xdmp.invokeFunction(function(){
  declareUpdate();
  updateDoc();
  auditHistory();
}),
retrieveDoc();

谁能解释一下,为什么当程序到了最后一步时,我仍然看到旧的文件 retrieveDoc()?

javascript transactions marklogic invoke
1个回答
2
投票

我相信你需要包裹 retrieveDoc() 变成 xdmp.invokeFunction 以查看更新后的文件。

xdmp.invokeFunction(() => {
  return retrieveDoc()
})
© www.soinside.com 2019 - 2024. All rights reserved.