【问题标题】:followers and following sytem追随者和追随系统
【发布时间】:2021-06-13 16:06:19
【问题描述】:

我正在开发一个社交网络 Web 应用程序我已经建立了一个使用 firebase 和 node js 关注追随者的系统,所以我创建了一个集合 users 并在其中两个追随者数组中,我设法添加了它们 现在我想发出一个条件来检查用户是否已经进行了跟进而不是将其第二次添加到表中我如何访问表(以下,关注者)以验证用户是否在

exports.onFollow = (req, res) => {
    const followDocument = db.doc(`/users/${req.body.email}`);
    const followerDocument = db.doc(`/users/${req.user.email}`);
    let followData;
    let followerData;

    followDocument
      .get()
      .then((doc) => {
        if (doc.exists) {
          followData = doc.data();

          if ('req.user.email', 'in', followData.followers.docs) {
            return res.status(200).json({
              error: 'user already follow'
            });
          } else {
            followData.followers.push(req.user.email);
            return followDocument.update({
              followers: followData.followers
            });
          }
        }
      })
      .catch((err) => {
        console.error(err);
        res.status(500).json({
          error: err.code
        });
      });

【问题讨论】:

  • 这是什么if ('req.user.email', 'in', followData.followers.docs) ??那不是正确的语法。在尝试更难的东西之前先学习 javascript。
  • 我想验证电子邮件是否已经存在于关注者数组中,因为我希望关注者是一个具有唯一值的数组。我该如何验证??

标签: node.js firebase google-cloud-firestore social-media


【解决方案1】:

听起来您希望followers 是一个具有唯一值的数组,这样每个电子邮件地址只能出现一次。 Firestore 有特殊的arrayUnion 操作用于向此类字段添加值。

来自updating elements in an array上的文档:

如果您的文档包含数组字段,您可以使用arrayUnion()arrayRemove() 来添加和删除元素。 arrayUnion() 将元素添加到数组中,但只添加不存在的元素。 arrayRemove() 删除每个给定元素的所有实例。

var washingtonRef = db.collection("cities").doc("DC");

// Atomically add a new region to the "regions" array field.
washingtonRef.update({
   regions: admin.firestore.FieldValue.arrayUnion("greater_virginia")
});

// Atomically remove a region from the "regions" array field.
washingtonRef.update({
   regions: admin.firestore.FieldValue.arrayRemove("east_coast")
});

对于您的用例,我建议切换到使用 arrayUnion(),因为它可以避免执行查询来检测电子邮件地址是否已经在数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 2017-12-08
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    相关资源
    最近更新 更多