如何为firebase字段添加价值

Posted

技术标签:

【中文标题】如何为firebase字段添加价值【英文标题】:how to add value into firebase field 【发布时间】:2021-12-11 09:45:31 【问题描述】:

我是 react native 和 firebase 的新手,正在尝试创建一个社交媒体应用程序,建立一个添加朋友的功能。

我正在尝试将 UID 添加到当前用户的数据库中 这是我的代码:


    const friendadd = async() =>

        
       // get the users field
        const friendlist = firebase.firestore().collection('users').where("UID", "==", firebase.auth().currentUser.uid).get();

        const addfriend = await friendlist.update(
            "FriendsList.yVHnHIqhsOYbVbWOM6TbjpU4N3x1":true
        )

        
    
    friendadd()



这就是我的火力基地的样子

通过使用上面的代码,它不会以某种方式更新该字段。但如果我对文档进行硬编码,它将起作用:

const friendlist = firebase.firestore().collection('users').doc('CgQklWWClMJdoOvU4pEk')

如何获取当前用户并更新字段?

【问题讨论】:

【参考方案1】:

要在FriendsList 字段中添加条目,您可以use an arrayUnion operation:

friendlist.update(
  FriendsList: firebase.firestore.FieldValue.arrayUnion(
    uid: "uidOfItemToAdd",
    bio: "bioOfItemToAdd"
  )
);

更新: 此代码将friendlist 设置为Promise<QuerySnapshot>

const friendlist = firebase.firestore().collection('users').where("UID", "==", firebase.auth().currentUser.uid).get();

处理这些文档并更新每个文档:

friendlist.then((querySnapshot) => 
  querySnapshot.forEach((doc) => 
    doc.ref.update(...); // ? here goes the same code as above
  );
);

【讨论】:

嗨弗兰克,我试过这种方式,但仍然没有更新。我想知道是不是因为const friendlist = firebase.firestore().collection('users').where("UID", "==", firebase.auth().currentUser.uid).get();这条线?它没有进入文档? 因为如果我对 .doc 进行硬编码,它将更新。 const friendlist = firebase.firestore().collection('users').doc('CgQklWWClMJdoOvU4pEk')。如何获取当前文档? 是的,这行不通。我更新了答案中的代码,但强烈建议花一些时间在文档中处理查询:firebase.google.com/docs/firestore/query-data/…,或在代码实验室中:firebase.google.com/codelabs/firestore-web 非常感谢。对于更新,有没有办法找到其他人的uid?并将其添加到当前用户的 FriendsList 中?

以上是关于如何为firebase字段添加价值的主要内容,如果未能解决你的问题,请参考以下文章

如何为分析添加 Firebase 自定义事件?

如何为 Flutter Web 添加 Firebase 预构建的身份验证 UI?

Swift 如何为使用 Firebase 投票的用户添加 5 星评分

如何为 Firebase (Kotlin) 创建自定义身份验证

Firebase Auth on Web - 如何为电子邮件/密码登录添加垃圾邮件保护

如何为 Firebase 取消部署 Cloud Functions?