【问题标题】:How can I save user's followers in firebase? React Native如何在 Firebase 中保存用户的关注者?反应原生
【发布时间】:2021-10-21 01:17:18
【问题描述】:

我的数据库中有两个集合,一个名为 Buyers,另一个名为 Sellers。每当买家关注卖家时,我都会将卖家的 Uid 保存在 Buyers 集合中名为 userFollowings 的子集合中。

我如何也可以保存关注者 Uid?每次买家关注卖家时,将买家 uid 保存在 Sellers 集合中名为 userFollowers 的子集合中?

这是我的代码:


const onFollow = () => {
  firebase.firestore()
      .collection("Buyers")
      .doc(firebase.auth().currentUser.uid)
      .collection("userFollowings")
      .doc(props.route.params.uid)
      .set({})


}
const onUnfollow = () => {
  firebase.firestore()
      .collection("Buyers")
      .doc(firebase.auth().currentUser.uid)
      .collection("userFollowings")
      .doc(props.route.params.uid)
      .delete()
}

【问题讨论】:

    标签: javascript firebase react-native google-cloud-firestore


    【解决方案1】:

    您可以使用batched write,如下所示,这样两个写入完全原子。

      const db = firebase.firestore();
    
      const onFollow = () => {
        const buyerID = firebase.auth().currentUser.uid;
        const followerID = props.route.params.uid;
    
        const buyerFollowerRef = db
          .collection('Buyers')
          .doc(buyerID)
          .collection('userFollowings')
          .doc(followerID);
    
        const sellerFollowerRef = db
          .collection('Sellers')
          .doc(followerID)
          .collection('userFollowers')
          .doc(buyerID);
    
        const batch = db.batch();
        batch.set(buyerFollowerRef, { foo: 'bar' });
        batch.set(sellerFollowerRef, { foo: 'bar' });
        batch.commit();
      };
    

    对于onUnfollow 函数,请使用batch.delete()


    您还可以使用在创建 userFollowings 子集合中的文档时触发的云函数。

    如果最终用户没有写入userFollowers子集合的权限,因此无法执行上述批量写入。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多