我正在尝试更新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)
})发布于 2018-06-22 03:30:43
问题在于这个片段:
for (var i=0; i < evalKeys.length; i++) {
var keys = evalKeys[i]
updateObj['evaluation/22/keys/label'] = label
}每次通过这个循环,您都要更新相同的路径:evaluation/22/keys/label。您可能希望在其中使用keys的值,因此:
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)
})https://stackoverflow.com/questions/50979131
复制相似问题