React Native中使用template literals更新Firebase数据不生效问题求助
问题原因
你遇到的是两个基础JS语法问题,共同导致了变量没有被正确解析:
- 模板字面量必须使用反引号
`包裹,你使用了单引号',JS不会解析单引号内的${}占位符 - 对象的动态属性名需要放在方括号
[]内,否则JS会把整段字符串当作静态键名存储
修正方案
把出错的代码行替换为以下写法即可:
{ [`FriendsList.${FriendsUID}`]: true }
完整的修正后代码参考:
export default function updatefriends(FriendsUID){ const friendadd = async() =>{ const Uid = firebase.auth().currentUser.uid const friendlist = firebase.firestore().collection('users').where( "UID", "==", firebase.auth().currentUser.uid).get(); console.log(Uid) friendlist.then((querySnapshot) => { querySnapshot.forEach((doc) => { doc.ref.update( { [`FriendsList.${FriendsUID}`]: true } ) }) }) } }
额外优化建议
你当前定义了async函数但没有使用await语法,可以调整为await写法避免then嵌套,可读性更高:
export default async function updatefriends(FriendsUID){ const currentUid = firebase.auth().currentUser.uid const querySnapshot = await firebase.firestore() .collection('users') .where("UID", "==", currentUid) .get() querySnapshot.forEach((doc) => { doc.ref.update({ [`FriendsList.${FriendsUID}`]: true }) }) }
内容的提问来源于stack exchange,提问作者Chang
相关产品推荐
相关产品推荐

