Firebase调用update()时如何将字符串作为JSON键实现批量更新
你的代码无法正常执行的核心原因是:对象字面量中直接写s: pic时,JavaScript会将s作为固定的键名(也就是实际会尝试更新名为s的字段),不会读取你之前定义的s变量的值。
方案1:单次批量更新(推荐)
先构造完整的更新对象,只发起一次Firebase更新请求,性能更好,也能保证字段更新的原子性:
// 构造更新对象 const updateObj = {} for (let i = 1; i <= 3; i++) { // 用方括号语法动态设置对象键名 updateObj[`img${i}`] = pic } // 单次执行更新 db.collection("users").doc(user.uid).update(updateObj)
方案2:循环单次更新(不推荐)
如果确实需要分开执行更新,可以使用ES6的计算属性名语法,动态设置每次更新的键名:
for (let i = 1; i <= 3; i++) { db.collection("users").doc(user.uid).update({ // 方括号包裹的表达式会被计算为最终的键名 [`img${i}`]: pic }) }
方案2会发起3次独立的写入请求,不仅占用更多写入配额,还可能出现部分更新成功、部分失败的数据不一致问题,无特殊需求优先选择方案1。
内容的提问来源于stack exchange,提问作者user1753491
相关产品推荐
相关产品推荐

