Хранимая процедура в MongoDB API: Azure Cosmos DB - PullRequest
0 голосов
/ 12 мая 2018

Коллекция Mongo повреждена после выполнения хранимой процедуры в Azure Cosmos DB с API Mongo.Вот тело хранимой процедуры:

function bulkImport(docs) {
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();


    var count = 0;


    if (!docs) throw new Error("The array is undefined or null.");

    var docsLength = docs.length;
    if (docsLength == 0) {
        getContext().getResponse().setBody(0);
    }


    tryCreate(docs[count], callback);


    function tryCreate(doc, callback) {
        var options = {
            disableAutomaticIdGeneration: true
        };

        var isAccepted = collection.createDocument(collectionLink, doc, options, callback);

        if (!isAccepted) getContext().getResponse().setBody(count);
    }


    function callback(err, doc, options) {
        if (err) throw err;

        count++;

        if (count >= docsLength) {
            getContext().getResponse().setBody(count);
        } else {
            tryCreate(docs[count], callback);
        }
    }
}

Здесь выполняется хранимая процедура непосредственно в проводнике данных Cosmos DB.вход: [{'type': 'A', 'name': 'test'}].

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вот что я слышал от службы поддержки Azure:

триггеры, и UDF - это функция, предоставляемая нашим SQL API. # API CosmosDB MongoDB использует поверхность с программируемостью MongoDB, которая не использует концепцию sprocs, триггеров, UDF. Пожалуйста, свяжитесь с нами по AskCosmosDB@microsoft.com, и мы поможем вам.

0 голосов
/ 14 мая 2018

Я заметил, что вы установили disableAutomaticIdGeneration равным true, и вы не указали свойство "id" в своих входных данных [{ 'type': 'A', 'name':'test' }].Это приведет к исключению.

Вы можете установить disableAutomaticIdGeneration равным false или указать свойство "id" в своем входе, и оно будет работать.

Надеюсь, это поможет вам.

...