Проверка с помощью функции Cloud, существует ли узел базы данных в базе данных Firebase Realtime - PullRequest
0 голосов
/ 13 мая 2019

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

Для меня идеальный способ сделать это будет:

exports.watchTeamMemberUpdates = functions.database
  .ref('/teams/{teamName}')
  .onUpdate((change) => {
     if (!change.before.exists()) {
       console.log('exists error');
       return null;
     }
});

Но для этого требуетсяснимок, и я даю ему обещание.

Можно ли каким-либо образом проверить, существует ли файл с обещанием?

Также есть лучший способ сделать снимки, отличные от.once.then

1 Ответ

0 голосов
/ 13 мая 2019

Я предполагаю, что, написав «Мне нужно проверить, существует ли файл », вы имеете в виду проверку, существует ли узел базы данных (т. Е. Член команды, сохраненный в название команды). Я позволил себе соответственно изменить название и содержание вашего вопроса.


Обратите внимание, что если вы хотите определить, не существует ли член команды с помощью триггера onUpdate(), , вы не добьетесь успеха , потому что эта облачная функция будет запущена, только если узел существовал до , так как мы следим за обновлениями (не за созданием).

Так что вы, вероятно, должны использовать onWrite() триггер. Ниже приведен код для двух типов триггера. Я бы посоветовал вам попробовать выполнить несколько записей и обновлений в вашей базе данных (разумеется, после развертывания этих двух функций) и посмотреть, что напечатано в журнале облачных функций.

exports.watchTeamMemberUpdates = functions.database
  .ref('/teams/{teamName}')
  .onUpdate((change, context) => {
    if (!change.before.exists()) {
      console.log('watchTeamMemberUpdates: exists error');
      return null;
    } else {
      console.log('watchTeamMemberUpdates: Team member exists');
      return null;
    }
  });

exports.watchTeamMemberWrites = functions.database
  .ref('/teams/{teamName}')
  .onWrite((change, context) => {
    if (!change.before.exists()) {
      console.log('watchTeamMemberWrites: exists error');
      return null;
    } else {
      console.log('watchTeamMemberWrites: Team member exists');
      return null;
    }
  });

PS: обратите внимание, что обработчик, который будет передан методу onUpdate(handler), является функцией с двумя аргументами, см. https://firebase.google.com/docs/reference/functions/functions.database.RefBuilder#onUpdate. Однако второй не является обязательным. То же самое с методом onWrite(handler).

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