JavaScript中Firebase如何用变量作为ChildSnapshot的取值键
问题根因
该问题属于JavaScript对象属性访问的基础语法问题:使用.点运算符访问对象属性时,JavaScript会将.后的内容作为固定的属性名字面量处理,不会解析为对应变量。你写ChildSnapshot.val().child_var时,程序会尝试读取对象中名为child_var的属性,而非读取child_var变量存储的Firstname对应的属性,因此无法拿到预期值。
可行解决方案
改用方括号[]语法访问动态属性即可,方括号内可以传入变量、表达式,JavaScript会自动解析其值作为属性名读取对应内容。
修正后的代码如下:
let child_var = "Firstname"; firebase.database(CustomerDatabase).ref('Customer').once('value', function (snapshot) { snapshot.forEach(function (ChildSnapshot) { console.log(ChildSnapshot.val()[child_var]); }) })
补充说明:你提供的两段示例代码都缺少forEach回调的闭合括号、以及once回调的闭合括号,实际运行时记得补全避免抛出语法错误。
内容的提问来源于stack exchange,提问作者ZBop
相关产品推荐
相关产品推荐

