我正在对具有“用户”的“产品”使用平面数据库布局,数据库布局如下所示。这是使用Firebase数据的常用“扁平”方式。
现在我有了一条路线,用户可以访问:/ products / 1,这应该为该产品加载用户
因此,基本上,我需要让Firebase向我提供该产品用户的详细信息。 (因此在我的示例中为1和2)
执行此操作的好方法是什么?
products: [
{
id: 1,
name: 'Product One',
users: [
1: true,
2: true
]
}
],
users: [
{
id: 1,
name: Tom
}
]
答案 0 :(得分:1)
有两个主要选项
在每个产品下复制每个用户的主要数据。例如:如果您需要显示该产品的每个用户的用户名,则可以将每个用户的名称存储在每个产品下:
products: [
{
id: 1,
name: 'Product One',
users: [
1: "Tom",
2: "Notflip"
]
}
],
使用此数据结构,您只需要加载产品节点,就不需要连接(服务器端和客户端)。如果您来自关系数据库的背景,则可能会触发所有“规范化警报”,但是在NoSQL数据库中,这种类型的数据复制非常普遍。尽管它使写入操作更加复杂(由于需要散发数据),但它使读取操作确实非常简单,并且具有极高的可伸缩性。
要了解有关处理重复数据更新的更多信息,请参见How to write denormalized data in Firebase。
我还建议: