Я использую Firebase как db для моего приложения Ionic 2.
Я написал следующий метод для обновления всех возрастных полей во всех дочерних узлах до значения 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()], он не может получить результат. Как изменить код, чтобы решить эту проблему?
Я считаю, что вы хотите испускать продолжительность каждого узла, рассматривая уже имеющийся 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);
}
duedate
? Что вы видите в выводе сconlose.log(dd)
? Кроме того, я бы использовалmoment().valueOf()
для сравнения двух временных меток.