Извлечение массива объектов из документа после внесения изменений в хранилище через облачные функции - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть документ пожарного магазина с полем под названием items, который представляет собой массив объектов, составляющих каждый элемент. Вот структура:

- Document1
              | document_status
              | items
                     | item1
                     |   | name
                     |   | item_status
                     | item2
                     |   | name
                     |   | item_status

Сейчас я слушаю обновления документов, используя метод onUpdate (), который работает нормально. Например: если document_status изменяется, я получаю изменение в методе change.after.data (). Но мне нужно получить ссылку на поле «items» через change.after.ref , чтобы я мог просмотреть все элементы и изменить item_status

Я хочу получить доступ к документу только через ** изменение , а не напрямую. Потому что я использую шаблоны для получения ссылки на документ **

Я видел близкий пример здесь: https://github.com/firebase/functions-samples/blob/master/limit-children/functions/index.js#L27-L39 но, к сожалению, я не мог попытаться пойти глубже и получить справку для предметов потомка.

Вот что я попробовал:

exports.sampleFunction = functions.firestore
        .document(‘mycollection/{documentId}/subCollection/{mydocuments}’).onUpdate((change, context) => {
        const newData = change.after.data();
        const documentStatus = newData.document_status;
         const parentRef = change.after.ref.child("items");
          return parentRef.once('value').then((snapshot) => {
            snapshot.forEach((item) => {
              updates[item.item_status] = "some_value"
            });
            return parentRef.update(updates);
          });
        }
        return;
    });

Я также пытался использовать:

change.after.ref.parent.child ( "элементы");

и разные комбинации. Но я получаю сообщение об ошибке, как показано ниже:

TypeError: change.after.ref.child is not a function
    at exports.sample_function.functions.firestore.document.onUpdate (/user_code/index.js:31:46)
    at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:112:27)
    at next (native)
    at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
    at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:82:36)
    at /var/tmp/worker/worker.js:710:26
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)

Подскажите, пожалуйста, как мне пройти все пункты и обновить все item_status до some_value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...