Как сделать что-то вроде «добавленного ребенком» события в функциях Firebase Cloud? - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно получить вновь выдвинутого потомка для пути (/ foo) из базы данных Firebase в реальном времени с использованием облачных функций.

/foo --newpushKey - eeee - ffff --pushKey1 - cccc - dddd --pushkey2 - aaaa - bbbb

Мне нужны только недавно добавленные данные, т. Е.

--newpushKey - eeee - ffff

Я прошел https://firebase.google.com/docs/functions/database-events. Как я могу получить только недавно добавленного Ребенка из ref('/foo').onWrite(...)?

Или я должен использовать Admin SDK для запроса /foo orderByKey или orderByChild для значения временной метки с limitToLast(1)?

Или работает наборы для выполнения операции, подобной операции Set Difference на snapshot.after.val() и snapshot.before.val()?

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы на правильном пути, вы даже нашли соответствующую документацию самостоятельно ... На этой странице, посмотрите на самый последний пример, я взял этот пример и отредактировал Вот некоторые, чтобы прояснить это для вас:

                                                     Notice this parameter?
                                                     This function will only fire on
                                                     the new data-node itself, not on
                                                     the parent node...
                                                              \/
                                                              \/
exports.makeUppercase = functions.database.ref('/messages/{pushId}')
    .onCreate( (change, context) => {

      // Since the function will only fire on the newly created node itself
      // the data that is 'after' the event will be your new data.
      // You can access the new data by calling:
      change.after.val()

      // From here you can do whatever actions you want with that data. 
      // You can access the {pushId} parameter with:
      context.params.pushId

    });
0 голосов
/ 01 июля 2018

Вы захотите использовать onCreate для вновь помещенных объектов, а не onWrite, что сработает при создании, обновлении или удалении объектов.

Вы можете указать компонент пути как подстановочный знак, окружив его фигурные скобки;

Вам нужно использовать подстановочный путь в ссылке на базу данных, например:

exports.checkForNew = functions.database.ref('foo/{createdID}').onCreate((created_child, context) => {

//context.params.createdID to reference the ID of the created object in the database under 'foo'
//created_child.val() to reference any field values of the created objcet

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