Я пытался запустить серверный JavaScript-код в marklogic, чтобы понять свойство транзакции marklogic.У меня есть 2 оператора, одно обновление и другой оператор запроса в одной транзакции.
Ниже приведен мой код JavaScript:
declareUpdate({explicitCommit: true});
xdmp.documentInsert("/docs/first.json", {"first": 1});
fn.doc("/docs/first.json");
xdmp.commit();
//xdmp.rollback()
Предполагается, что приведенный выше код, запущенный в консоли запросов, будет вставлен "/docs/first.json "и затем запрос" /docs/first.json". Первый оператор в транзакции, который является вставкой документа, работает нормально, но затем второй оператор не выполняется, и запрос возвращает меня "null".Также, когда я использовал xdmp.rollback, он выдавал ошибку: [javascript] TypeError: Невозможно прочитать свойство 'result' с нулевым значением .Может ли кто-нибудь объяснить это, потому что в одной транзакции операторы должны видеть результаты ранее выполненных операторов.Тот же запрос, который я выполнил в Xquery, и я смог увидеть результат.
Ниже приведен мой код Xquery:
xquery version "1.0-ml";
declare option xdmp:commit "explicit";
xdmp:document-insert('/docs/mst1.xml', <data/>);
fn:doc('/docs/mst1.xml');
xdmp:document-insert('/docs/mst2.xml', fn:doc('/docs/mst1.xml'));
xdmp:rollback()
Приведенный выше код возвращает мне документ с результатом, представленный в URI.«/docs/mst1.xml», что <data> </data>