Как обновить значение документа firestore с помощью облачных функций firebase - PullRequest
0 голосов
/ 08 марта 2020

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

Пример

Предположим, что документ на рисунке изменился и имеет новые значения, как на рисунке ниже

enter image description here

Теперь я хотел бы обновить значение accuracy до successes / attempts, ie I хотел бы, чтобы точность была 6/11 = 0,54

Что я должен написать в функции? Вот что у меня есть

exports.calculateAccuracy = functions.firestore.document('/users/{userId}/wordScores')
    .onUpdate((change, context) => {

      //what to write here?

    });

Дополнительный вопрос: сколько операций чтения / записи я собираюсь использовать для обновления точности?

Спасибо !!!

1 Ответ

2 голосов
/ 08 марта 2020

Следующее должно сделать трюк. Обратите внимание на путь в триггере Cloud Firestore (users/{userId}/wordScores/{scoreDocId}): он указывает на документ, а не на коллекцию. Больше информации в документации .

exports.calculateAccuracy = functions.firestore
    .document('users/{userId}/wordScores/{scoreDocId}')
    .onUpdate((change, context) => {

        const newValue = change.after.data();
        const previousValue = change.before.data();

        if ((newValue.attempts !== previousValue.attempts) || (newValue.successes !== previousValue.successes)) {
            return change.after.ref.update({
                accuracy: newValue.successes / newValue.attempts
            });

        } else {
            return null;
        }

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