У меня проблема с обновлением значения в firebase. Вот сценарий и код: я использую forEach l oop для некоторых данных, около 300 записей. Я обновляю состояние локально, и в функции обратного вызова у меня есть функция, которая выполняет этот код (частично).
.then(memKey => {
this.setState({
memberKeyID: memKey,
family: {[memKey]: [first, last, 'Head of house']},
memberSaved: true,
readOnly: true
}, () => {
this.props.firebase.getMemberCount(currentOrganization).once('value')
.then(count => {
console.log(count.val());
if(count.val()) {
const countTotal = count.val() + 1;
return countTotal;
} else {
return 1;
}
})
.then(memberCount => {
console.log(memberCount);
this.props.firebase.setMemberCount(currentOrganization, memberCount)
})
})
})
Я звоню на getMemberCount
, который в то время возвращает 5, когда мы console.log (count .val ()) Я получаю «5». Поэтому, выходя из этого, я ожидал, что когда я вызову next затем и передам memberCount, я установлю обновленное значение.
В примере: при первом запуске countTotal = 5 + 1; должен вернуть 6, затем в следующий раз countTotal = 6 + 1 et c. Однако это не так. Я получаю 5 за количество записей, которые мы l oop. Когда данные содержат 300 записей, консоль 5 регистрируется 300 раз.
Что мне здесь не хватает?