Обновите другую коллекцию в хранимой процедуре базы данных документов 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)


arrow_upward
5
arrow_downward

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

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