Итак, у меня следующая проблема, мне нужно обновить массив в документе JSON. Это документ, который фиксирует настройки проекта, участники проекта могут читать документ проекта, но не обновлять его.
Мне нужно сначала прочитать документ, но это другая транзакция, извлечь массив members
и продолжить.
Теперь объект JSON, который я получаю от xdmp.eval()
, не может найти массив, объект JSON непосредственно из cts.doc()
делает ...?
Пример документа проекта по адресу uri '/projects/12345.json':
{
"name": "project01",
"description": "example project",
"id": "12345",
"members": [
{
"name": "user01",
"role": "owner",
"uid": "234"
},
{
"name": "user02",
"role": "member",
"uid": "123"
}
]
}
Мой запрос JavaScript:
var pid = 12345;
// uri to project doc
var pUri = '/projects/' + pid + '.json'
// alternative to not lock project doc
var options = {
"isolation" : "different-transaction"
}
//var prjObj = xdmp.eval('cts.doc("' + pUri + '")',null,options).toObject()[0]
//var prjObj = xdmp.eval('cts.doc("' + pUri + '").toObject()',null,options)
var prjObj = cts.doc(pUri).toObject()
prjObj.members
возвращает массив членов, как и ожидалось, но
// cast eval result to object
var prjObj = xdmp.eval('cts.doc("' + pUri + '")',null,options).toObject()[0]
// cast doc to object inside eval
var prjObj = xdmp.eval('cts.doc("' + pUri + '").toObject()',null,options);
// end code
Но возвращаемые объекты не могут найти массив членов ...
что теперь?