Firestore中数值类型字段无法像字符串字段一样打印到列表怎么解决?
问题原因
你遇到的读取失败问题和字段值的类型无关,是对象属性访问语法的问题:
使用点语法(.)访问JS对象属性时,引擎会把.后的标识符直接作为固定字符串键名处理,不会解析成你定义的变量。你写updatesArgument.data().i时,实际是在查找字段名为"i"的属性,自然读不到变量i存储的数值1对应的字段。
解决方法
改用方括号([])属性访问语法即可,方括号内的内容会被解析为变量,取变量的实际值作为键名读取属性:
li.setAttribute('data-id', updatesArgument.id); let i = 1; // 用方括号读取变量i对应的字段 const targetValue = updatesArgument.data()[i]; // 拼接你需要的「序号: "内容"」格式 name.textContent = `${i}: "${targetValue}"`; li.appendChild(name); infoUpdates.appendChild(li);
如果要兼容字段不存在的异常场景,可以加兜底默认值:
const targetValue = updatesArgument.data()[i] ?? '无对应数据';
补充说明
Firestore中如果字段名是数字类型,存储时会自动转为字符串类型的键,用数值变量放在方括号内访问时,JS会自动把数值转成字符串匹配键名,不管字段值是字符串、数字还是其他基础类型,赋值给textContent时都会自动转为字符串正常展示。
内容的提问来源于stack exchange,提问作者Draco Malfoy
相关产品推荐
相关产品推荐

