В DocumentDB Я создаю предварительный триггер для операции Create. Код триггера следующиеРесурс DocumentDB с указанным идентификатором уже существует при запуске пред-триггера при создании
function createBlock() {
var collection = getContext().getCollection();
var request = getContext().getRequest();
var docToCreate = request.getBody();
if (docToCreate.DocumentType)
{
var query = "SELECT TOP 1 a.BlockSequence FROM a ORDER BY a.BlockSequence DESC";
var isAccepted = collection.queryDocuments(collection.getSelfLink(), query, function (err, feed, options) {
if (err)
throw err;
if (!feed)
throw new Error("Failed to find the document.");
if (feed.length)
{
docToCreate.BlockCode += (feed[0].BlockSequence + 1);
docToCreate.BlockSequence = feed[0].BlockSequence + 1;
}
else
{
docToCreate.BlockCode += "1";
docToCreate.BlockSequence = 1;
}
var isAccepted = collection.createDocument(collection.getSelfLink(), docToCreate);
if (!isAccepted)
throw new Error("The call createDocument returned false.");
});
}
else
throw new Error("DocumentType property is required.");
if (!isAccepted)
throw new Error("The call queryDocuments returned false.");
}
Триггер выполняется до линии непосредственно над var isAccepted = collection.createDocument(collection.getSelfLink(), docToCreate);
.
Когда var isAccepted = collection.createDocument(collection.getSelfLink(), docToCreate);
выполняются, эта ошибка возникает Message: {"Errors":["Resource with specified id or name already exists"]}
Я проверил и никаких документов с одинаковым идентификатором нового документа не хранятся в эту коллекцию.