如何在Firebase的.update()方法中使用自定义动态键?
解决Firebase Realtime Database动态键更新的问题
这是个很常见的JavaScript对象字面量小坑!你当前的写法里,对象的键会被当作字符串字面量处理,所以key1和key2直接被当成了路径名称,而不是取变量key1、key2的实际值。这里有两种简单的解决方案:
方法一:ES6计算属性名(推荐)
ES6引入的计算属性名可以直接在对象字面量里使用动态键,只需要把变量用方括号[]包裹起来:
const key1 = 'bar'; const key2 = 'baz'; db.ref('path').update({ [key1]: 'value1', [key2]: 'value2' });
方括号里的表达式会被自动求值,所以[key1]会被替换成变量key1的值'bar',最终写入的路径就是你预期的/path/bar/value1和/path/baz/value2。
方法二:ES5兼容写法
如果你的项目需要兼容不支持ES6的旧环境,可以先创建一个空对象,再动态给它赋值键值对:
var key1 = 'bar'; var key2 = 'baz'; var updates = {}; updates[key1] = 'value1'; updates[key2] = 'value2'; db.ref('path').update(updates);
这种方式先构建好包含动态键的对象,再把它传给update()方法,效果和第一种完全一致。
内容的提问来源于stack exchange,提问作者craft
相关产品推荐
相关产品推荐

