DocumentDBで作成操作でプリトリガを作成しました。トリガコードは、トリガが直ちにvar isAccepted = collection.createDocument(collection.getSelfLink(), docToCreate);
上の行まで実行され、次の指定されたidを持つ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);
が実行されると
、このエラーは、私がチェックした、新たな文書の同じIDを持つ文書がこのコレクションに格納されていないMessage: {"Errors":["Resource with specified id or name already exists"]}
がスローされます。