В Cosmos DB с SQL API мне нужно сделать копию документа JSON из бэкэнда (USP с кодом JavaScript), прежде чем новая версия того же документа будет перезаписана API. Эта копия должна иметь свой тег свойства 'Latest' до 'false'
- Попытка создать SP, который создает копию документа перед обновлением, но я не могу создать копию документа, поскольку выдается ошибка, говорящая, что метод getBody () является анонимным
- Пытался создать предварительный триггер, который создает копию документа, но триггер не срабатывал, так как я запускаю код на портале Azure
- Я могу использовать getBody () в UDF или отдельном USP, но их нельзя вызывать из моего базового USP, так как это не разрешено
function ChangeDocument(AId) {
var context = getContext();
var coll = context.getCollection();
var link = coll.getSelfLink();
var response = context.getResponse();
var doc = getContext().getRequest().getBody();
var ts = new Date();
var time = ts.getTime().toString();
var idNew = doc.id + time;
var oldDoc = docs[0]
var historyDoc = {
"id": idNew,
"Content": oldDoc.Content
};
coll.createDocument(link, historyDoc, function (err, docCreated) {
if (err) {
throw new Error('Error: ' + err.message);
}
});
doc.AuditFields.Latest = false;
var replace = coll.replaceDocument(doc._self, doc, {},
function (err, newdoc) {
if (err) throw err;
response.setBody(newdoc);
});
if (!replace) {
throw new Error('The document could not be updated.');
}
}
Моя цель -
- JavaScript для создания копии старого документа с возможностью изменения свойств
- Обновите документ с помощью хранимой процедуры, запустив ее на портале Azure
- Я буду повышать этот код для выполнения массового импорта / обновления в конечном итоге