首页 > 解决方案 > 在 Firebase 中构建基本数据(产品、品牌和类别)

问题描述

我正在学习 Firebase (Firestore) 和 React。以前,我使用过 PostgreSQL 和 Rails,所以对我来说一切都不同。我已经阅读了很多关于如何使用它的信息,并且我能够获取数据、存储简单数据等,但我几乎完全不知道如何构建我的数据并正确使用它。我知道没有“唯一的方法”可以做到这一点,但是有人可以解释一下,就像你在和一个真正的初学者交谈一样,例如如何构建以下数据?

我有产品。每个产品都有一个名称、一个价格、一个品牌和一些卖家(销售该产品的在线商店)。每个品牌都可以有一个名称、一个网站和许多相关的产品。每个卖家都可以有一个名称、一个网站和许多相关的产品。

从我读过的内容来看,我应该像这样构建它:产品系列、品牌系列和卖家系列。这是它在我的 Firestore 控制台中的样子:

产品集合 产品集合

品牌集合 品牌集合

品牌 - 产品子系列 品牌 - 产品子系列

卖家集合 卖家收藏

卖家子集合看起来像品牌 - 产品子集合。

第一个问题:这种结构有意义吗? 第二个问题:由于我在数据中使用了引用,我如何从每个产品中访问例如“品牌”或“卖家”?

现在,我在我的 react 组件中创建了以下函数来获取我的所有产品:

getAllProducts() {
    productsCollection
      .orderBy('releaseDate', 'desc')
      .get()
      .then((snapshot) => {
        snapshot.forEach((doc) => {
          const products = firebaseLooper(snapshot);
          const brand = '';
          const sellers = [];

          console.log(doc.data());

          this.setState({
            products,
          });
        });
      })
      .catch((e) => {
        console.log(e);
      });
  }

当我console.log(doc.data());,我可以正确地看到我的所有数据。但是我如何以可读的格式访问品牌价值和卖家价值呢?现在,它看起来像这样:

控制台日志(doc.data())

所以我不能使用doc.data().brand例如。

我想要实现的是一个简单的应用程序,您可以在其中添加一个新产品的表单。您添加名称、价格、选择品牌和卖家。在产品页面中,您可以看到与产品关联的名称、价格、品牌和卖家。

编辑:这是 firebaseLooper 函数的样子:

export const firebaseLooper = (snapshot) => {
  let data = [];

  snapshot.forEach((doc) => {
    data.push({
      ...doc.data(),
      id: doc.id,
    });
  });

  return data;
};

标签: firebasegoogle-cloud-firestore

解决方案


推荐阅读