firebase - 在 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().brand
例如。
我想要实现的是一个简单的应用程序,您可以在其中添加一个新产品的表单。您添加名称、价格、选择品牌和卖家。在产品页面中,您可以看到与产品关联的名称、价格、品牌和卖家。
编辑:这是 firebaseLooper 函数的样子:
export const firebaseLooper = (snapshot) => {
let data = [];
snapshot.forEach((doc) => {
data.push({
...doc.data(),
id: doc.id,
});
});
return data;
};
解决方案
推荐阅读
- ios - iOS - 如何使用泛型在 Swift 中编写 DecodeHelper 类?
- jquery - 扩展 jQuery 表格搜索脚本
- spring - Eclipse STS 使用子项目在本地运行 Spring Boot
- django - 使用 Stripe 的 Django ACH 的基本问题
- mysql - mysqld 服务无法启动
- sql - SQL Server 窗口函数基于时间的数据
- html - 悬停影响除被悬停的项目以外的其他元素
- go - 如何使用 paho.mqtt.golang 库订阅多个 MQTT 主题?
- c - GSL:样条线之间共享加速器
- node.js - 如何断开pg模块中的池