JavaScript 在 MarkLogic 中调用交易
JavaScript invoke transactions in MarkLogic
我有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>
我写了一个程序来更新第二个 price 元素,审计这样的更新,最后检索更新的文档。
该程序包含三个功能。当程序到达最后的检索步骤时,我仍然看到旧文档。如果我打开另一个 window,我会看到更新的文档。
<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()
时我仍然看到旧文档吗?
我认为您需要将 retrieveDoc()
包装到另一个 xdmp.invokeFunction
中才能看到更新后的文档。
xdmp.invokeFunction(() => {
return retrieveDoc()
})
我有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>
我写了一个程序来更新第二个 price 元素,审计这样的更新,最后检索更新的文档。 该程序包含三个功能。当程序到达最后的检索步骤时,我仍然看到旧文档。如果我打开另一个 window,我会看到更新的文档。
<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()
时我仍然看到旧文档吗?
我认为您需要将 retrieveDoc()
包装到另一个 xdmp.invokeFunction
中才能看到更新后的文档。
xdmp.invokeFunction(() => {
return retrieveDoc()
})