обновить данные из базы данных после выполнения расчетов

1

Я использую Firebase как db для моего приложения Ionic 2.

Изображение 174551

Я написал следующий метод для обновления всех возрастных полей во всех дочерних узлах до значения 7 (для целей тестирования):

  multiupdate(){
  var pc;

  this.memberProfileref.child('/members/').once('value',(snapshot)=> {

      snapshot.forEach(child=> {

          this.setAge(child.key);     // Will update all the age fields to 7 (works well)

          return false;
      });   
   });
}

setAge(UserId){
    this.memberProfile.child(UserId).update({
       age:7
    });
}

Вышеприведенный код работает хорошо.

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

Мне нужно получить duedate от Firebase, используя следующий метод и вычислить продолжительность, основанную на сегодняшнем:

setduration(lastday){
   var today= moment().format('L');
      var durationd = moment(lastday).diff(moment(today));
      var dd=moment.duration(durationd).as('days');
     console.log(dd);
}

Но когда я вызываю метод [так же, как и с setAgemethod()], он не может получить результат. Как изменить код, чтобы решить эту проблему?

  • 0
    Ваш вопрос не ясен. Что вы передаете в учебу? duedate ? Что вы видите в выводе с conlose.log(dd) ? Кроме того, я бы использовал moment().valueOf() для сравнения двух временных меток.
  • 0
    @Ari Ari 7 Спасибо за ответ. Да, мне нужно пройти по всем chidnodes один за другим и взять duedate , затем передать его методу setduration () и получить duration. После этого обновить продолжительность поля. В firebase.
Теги:
angular
firebase
ionic2
firebase-realtime-database

1 ответ

0
Лучший ответ

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

 multiupdate(){
      var pc;

      this.memberProfileref.child('/members/').once('value',(snapshot)=> {

          snapshot.forEach(child=> {

              this.setAge(child.key); // Will update all the age fields to 7 (works well)
              this.setduration(child.val().duedate); //<-- call your method like this

              return false;
          });   
       });
    }

    setAge(UserId){
        this.memberProfile.child(UserId).update({
           age:7
        });
    }

    setduration(lastday){
       var today= moment().format('L');
          var durationd = moment(lastday).diff(moment(today));
          var dd=moment.duration(durationd).as('days');
         console.log(dd);
    }
  • 0
    Это именно то, что мне нужно. Теперь все работает нормально. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню