我正在尝试更新2个独立的火力基地位置1.是患者列表,而2.是对该患者的评估列表。我创建了一个查找,列出了对该患者的所有评估
我一直在使用下面的代码来循环评估键,但是只有患者位置正在更新。请帮忙。
function updateLabel ({rootRef, uid, label}){
var lookupRef = rootRef.child('evaluation_lookup/22')
return lookupRef.once('value'). then(snap => {
var evalKeys = Object.keys(snap.val())
var updateObj = {}
for (var i=0; i < evalKeys.length; i++) {
var keys = evalKeys[i]
updateObj['evaluation/22/keys/label'] = label
}
updateObj['patient/22/label'] = label
return rootRef.update(updateObj)
})
}
updateLabel ({
rootRef: firebase.database().ref(),
uid: '22',
label: 'yetunde'
}).then(_=> {
console.log('complete!')
}).catch(err => {
console.error(err)
})
答案 0 :(得分:0)
问题在于以下代码段:
for (var i=0; i < evalKeys.length; i++) {
var keys = evalKeys[i]
updateObj['evaluation/22/keys/label'] = label
}
每次通过此循环,您都在更新同一路径:evaluation/22/keys/label
。您可能要在其中使用keys
的 value ,所以:
updateObj['evaluation/22/'+keys+'/label'] = label
或使用模板文字:
updateObj[`evaluation/22/${keys}/label`] = label
作为其他更改,我建议使用Array.forEach()
遍历键。甚至更好,请使用Firebase内置的Snapshot.forEach()
:
return lookupRef.once('value'). then(snap => {
var updateObj = {}
snap.forEach(function(child) {
updateObj['evaluation/22/'+child.key+'/label'] = label
}
return rootRef.update(updateObj)
})