Firebase snapshot.val () не является функцией - PullRequest
1 голос
/ 20 марта 2020

Я написал этот метод, который должен console.log данные узла триггера, но я получаю ошибку.

Это то, что я пытался "

exports.makeUppercase = functions.database
  .ref('/users/{userId}/matches')
  .onWrite((snapshot, context) => {
    // Grab the current value of what was written to the Realtime Database.
    //const original = snapshot.val();
    console.log('OnWrite works' + snapshot.after.val());
    // const uppercase = original.toUpperCase();
    // You must return a Promise when performing asynchronous tasks inside a Functions such as
    // writing to the Firebase Realtime Database.
    // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
    return null;
  });

Это ошибка: makeUppercase TypeError : snapshot.val не является функцией export.makeUppercase.functions.database.ref.onWrite (/srv/index.js:49:44) в cloudFunction (/ srv / node_modules / firebase-functions / lib / cloud- Функции Я сделал что-то не так?

1 Ответ

1 голос
/ 20 марта 2020

Из документов :

Данные события теперь представляют собой DataSnapshot.

В более ранних выпусках event.data представлял собой DeltaSnapshot; начиная с версии 1.0 это DataSnapshot.

Для событий onWrite и onUpdate параметр данных имеет поля до и после. Каждый из них представляет собой DataSnapshot с теми же методами, которые доступны в admin.database.DataSnapshot.

Например:

exports.dbWrite = functions.database.ref('/path').onWrite((change, context) => {
  const beforeData = change.before.val(); // data before the write
  const afterData = change.after.val(); // data after the write
});

Поэтому в вашем коде вам нужно либо использовать after свойство для извлечения свойства после записи или before:

const original = snapshot.after.val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...