Проверка значения узла в firebase и добавление в базу данных - PullRequest
0 голосов
/ 11 января 2020

Мне нужно написать код, который смотрит на значение в notifications / notifications_switch. Если значение этого ключа равно 1, мне нужно добавить новый узел в узел test_manav. Я запутался в том, должен ли я выполнить sh это с помощью кода, который я сейчас написал (второй фрагмент), с помощью ref.key, а затем проверить значение ключа, или мне следует использовать:

ref.on('value', function(snapshot){
   if(snapshot.val()==1){
exports.scheduledFunction = functions.pubsub.schedule('every 1000 minutes').onRun((context) => {
  var db = admin.database().ref().child('test_manav');
  var ref = admin.database().ref('/notifications/notifications_switch');
  var key = ref.key;
  if(key==1){
      return db.update({
        time: admin.database.ServerValue.TIMESTAMP,
        test: 'Hello Manav'
      });
    }
});

Picture of Database

Ответы [ 2 ]

1 голос
/ 11 января 2020
0 голосов
/ 12 января 2020

Следующие действия должны помочь:

exports.scheduledFunction = functions.pubsub.schedule('every 1000 minutes').onRun((context) => {
    const db = admin.database();
    const targetRef = db.ref('test_manav');
    const switchRef = db.ref('notifications_switch');

    return switchRef.once('value')   // <-- See the return here
        .then(dataSnapshot => {
            if (dataSnapshot.val() === 1) {
                return targetRef.update({     // <-- See the return here
                    time: admin.database.ServerValue.TIMESTAMP,
                    test: 'Hello Manav'
                });
            } else {
                return null;
            }
        });
});

Как объяснил Даг в своем ответе:

  1. Вы должны использовать метод once();
  2. Вы должны вернуть Обещание, когда асинхронные задачи завершены путем возврата цепочки Обещаний.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...