Обновите другую коллекцию в хранимой процедуре базы данных документов Azure.

Нам нужно обновить все документы в коллекции, чтобы изменить их форму. Мы хотели бы записать аудит изменения в другую коллекцию, где мы будем хранить документ, содержащий старую и новую версии. Чтобы сделать это изменение атомарным, мы используем хранимую процедуру.

Проблема, с которой мы сталкиваемся, заключается в обновлении другой коллекции из сохраненного процесса. Кажется, что документ аудита всегда записывается в коллекцию, к которой принадлежит хранимый процесс.

Я написал образец хранимой процедуры:

function sample(prefix) {
    var context = getContext();
    var fooCollection = context.getCollection();
    var barCollection = context.getCollection("BarCollection");

    // Query documents and take 1st item.
    var isAccepted = fooCollection.queryDocuments(
        fooCollection.getSelfLink(),
        'SELECT * FROM root r',
        function (err, feed, options) {
            if (err) throw err;

            // Check the feed and if empty, set the body to 'no docs found', 
            // else take 1st element from feed
            if (!feed || !feed.length) context.getResponse().setBody('no docs found');
            else {
                var fooDoc = feed[0];

                var barDoc = {
                    "foo" : fooDoc,
                    "bar" : "bar"
                }

                var isAccepted2 = barCollection.createDocument(barCollection.getSelfLink(), barDoc);  

                if (!isAccepted2) throw new Error('The query was not accepted by the server.'); 
            } 

        });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}

В этом примере моя сохраненная процедура сохраняется в файле FooCollection. Я получаю документ и пытаюсь сохранить копию в папку BarCollection. Новый документ всегда сохраняется в папке FooCollection.

Поддерживается ли этот сценарий в Document DB? Если да, то какие изменения мне нужно сделать, чтобы хранимый процесс заработал?


person Kevin Kuszyk    schedule 22.08.2016    source источник


Ответы (1)


Хранимые процедуры DocumentDB ограничены коллекцией. Вы не сможете записывать информацию об аудите в отдельную коллекцию; вам нужно будет написать в ту же коллекцию.

person David Makogon    schedule 22.08.2016
comment
Спасибо, Давид, я так и думал. - person Kevin Kuszyk; 22.08.2016