首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火源多路径更新

火源多路径更新
EN

Stack Overflow用户
提问于 2018-06-22 00:33:14
回答 1查看 1K关注 0票数 1

我正在尝试更新2独立的火源位置,1是病人的列表,2是该病人的评估列表。我创建了一个查找列表,列出了那个病人的所有评估结果。

我一直在使用下面的代码循环使用评估键,但是只有病人的位置正在更新。请帮帮忙。

代码语言:javascript
复制
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)
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 03:30:43

问题在于这个片段:

代码语言:javascript
复制
for (var i=0; i < evalKeys.length; i++) {
  var keys = evalKeys[i]
  updateObj['evaluation/22/keys/label'] = label
}

每次通过这个循环,您都要更新相同的路径:evaluation/22/keys/label。您可能希望在其中使用keys的值,因此:

代码语言:javascript
复制
  updateObj['evaluation/22/'+keys+'/label'] = label

或者使用模板文字:

代码语言:javascript
复制
  updateObj[`evaluation/22/${keys}/label`] = label

作为一项额外的更改,我建议使用Array.forEach()循环键。或者更好的是,使用Firebase的内置Snapshot.forEach()

代码语言:javascript
复制
return lookupRef.once('value'). then(snap => {
  var updateObj = {}
  snap.forEach(function(child) {
    updateObj['evaluation/22/'+child.key+'/label'] = label
  }
  return rootRef.update(updateObj)
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50979131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档