marklogic xquery 如何提交更新,然后可以通过同一 xquery 函数中的以下行使用更新?
marklogic xquery how to commit the update and then the update can be used by following lines in same xquery function?
我在 windows 10.
上使用 marklogic 10
我有一个工作流程,我想为每个步骤记录信息。所以我想在数据库中有类似的东西,我更新数据,提交,然后我可以在下面的代码中立即使用这个数据。
这可行吗?以及如何?
例如,在下面的示例代码中,假设我是第一次写日志,我想在我写日志之前创建文档。所以我创建了日志文档,提交,然后我将一个日志节点插入到这个日志文档中。但是好像创建了日志文档,但是日志节点没有插入到日志文档中。我应该如何让它工作?这个想法是我想要一个可以将日志节点插入日志文件并且不受以下代码任何失败影响的功能
let $logFile := "/workflow/tracking/load-log.xml"
let $thisErrorMsg := <error>
<time>2020/04/10</time>
<desc>test</desc>
</error>
let $_log-file-exists := if(fn:empty(fn:doc($logFile)))
then
let $root := <errors></errors>
return
(
xdmp:set-transaction-mode("update")
,
xdmp:document-insert(
$logFile,
$root,
<options xmlns="xdmp:document-insert">
<permissions>{xdmp:default-permissions()}</permissions>
<quality>10</quality>
</options>)
,
xdmp:commit()
)
else ()
return
(
xdmp:set-transaction-mode("update")
,
xdmp:node-insert-child( fn:doc($logFile)/errors, $thisErrorMsg)
,
xdmp:commit()
)
非常感谢您的帮助
海伦
虽然有很多方法可以随心所欲,但我会避免这样做。您的代码将变得不必要地复杂。只需编写带有第一个错误的初始文档,或追加。
您也可以考虑将每个错误都写成单独的文档。当您的日志文件开始变大时,将不容易处理。
HTH!
我在 windows 10.
上使用 marklogic 10我有一个工作流程,我想为每个步骤记录信息。所以我想在数据库中有类似的东西,我更新数据,提交,然后我可以在下面的代码中立即使用这个数据。 这可行吗?以及如何?
例如,在下面的示例代码中,假设我是第一次写日志,我想在我写日志之前创建文档。所以我创建了日志文档,提交,然后我将一个日志节点插入到这个日志文档中。但是好像创建了日志文档,但是日志节点没有插入到日志文档中。我应该如何让它工作?这个想法是我想要一个可以将日志节点插入日志文件并且不受以下代码任何失败影响的功能
let $logFile := "/workflow/tracking/load-log.xml"
let $thisErrorMsg := <error>
<time>2020/04/10</time>
<desc>test</desc>
</error>
let $_log-file-exists := if(fn:empty(fn:doc($logFile)))
then
let $root := <errors></errors>
return
(
xdmp:set-transaction-mode("update")
,
xdmp:document-insert(
$logFile,
$root,
<options xmlns="xdmp:document-insert">
<permissions>{xdmp:default-permissions()}</permissions>
<quality>10</quality>
</options>)
,
xdmp:commit()
)
else ()
return
(
xdmp:set-transaction-mode("update")
,
xdmp:node-insert-child( fn:doc($logFile)/errors, $thisErrorMsg)
,
xdmp:commit()
)
非常感谢您的帮助 海伦
虽然有很多方法可以随心所欲,但我会避免这样做。您的代码将变得不必要地复杂。只需编写带有第一个错误的初始文档,或追加。
您也可以考虑将每个错误都写成单独的文档。当您的日志文件开始变大时,将不容易处理。
HTH!