Пример кода работает.Если вы выполните его, вы заметите, что эти документы не вставляются в базу данных.Вы можете добавить некоторые диагностические сообщения xdmp.log()
и найти их в ErrorLog, чтобы доказать, что он выполняет ваш код.
Может показаться, что при выполнении кода через консоль запросов результат выполнения eval будетне полная / ожидаемая полезная нагрузка.
При откате транзакции текущий оператор немедленно завершается, обновления, сделанные любым оператором в транзакции, отбрасываются, и транзакция завершается.
Результатом оператора, оканчивающегося на xdmp:rollback
, всегда является пустая последовательность.
Таким образом, вместо возврата объекта ответа со свойством result
, ответом eval будет 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":[]}
}
}