Firebase 数据建模指南
Firebase data modeling guidance
冒着被标记为重复的风险,开始吧。
我有物品和标签。项目可以有多个标签,每个标签可以是另一个标签的子标签。
我想以树的形式列出标签,以及每个标签内的项目。
本质上,标签是项目的文件夹,除了一个项目可以在多个位置。
这是正确的方法吗?
/items/
i123 : {
Label : "i am an item",
Tags : { tagid: t234}
}
/tags/
t234 : {
Label : "i am a Tag",
Parent: {tagid: t567}
}
我有点不确定自己是否做对了。当然,我确实通读了 firebase 上令人沮丧的文档和教程,我也确实看过其他类似的问题。
我被困在 RDBMS 中,似乎无法理解 nosql 概念,这就是为什么我希望在这里获得一些关于这里用例的指导。
谢谢。
根据评论者的要求,提供有关用例的更多信息。
我正在尝试显示标签树,就像这样
I am tag One
I am second tag
this is a child tag
here is a child's child tag
another child tag
I am a root level tag again
// etc... you get the idea
还有物品,物品可以在多个标签中。此处的显示与文件浏览器中的显示完全一样,真的。除了这里,项目可以位于多个地方,即它们可以关联多个标签。
像这个例子,其中 item 334
位于多个位置:
tag 1
item 209
tag 2
tag 21
item 11
item 334
tag 3
item 334
item 586
现在,我想我可以将整个内容存储在一个 JSON 对象中,并根据需要进行更新,但我感兴趣的是可以通过标签和项目标签进行搜索。所以在我虚弱的新手头脑中,我假设我应该能够有一个 URL /tags/
我可以遍历以获取与标签匹配的项目。 /items/
也是如此,因此我可以在标签上进行关键字匹配。
关于 SO 的其他答案描述了为事物创建索引的方法,这就是为什么我将标签引用存储在我的项目对象中。我正在努力解决这方面的细节问题。
我越想越倾向于将所有内容简单地存储在一个大的嵌套对象中,但我认为这不是一个好主意。如果我这样做的话,我特别不喜欢多次存储一个项目的想法。
RDB 世界里的生活更轻松,因为我知道我在做什么 :P
此结构符合您问题的标准,但问题中确实没有信息来组合可靠的答案。
items
item_00
tag_00
tag_01
tag_02
item_01
tag_02
item_02
tag_01
tags
tag_00
parent: false
child: tag_01
tag_01
parent: tag_00
child: false
tag_02
parent: false
child: false
在这个例子中,
- 项目可以有很多标签
- 每个标签都可以是另一个标签的子标签(并且跟踪 parent:child 关系)
- 标签以树的形式列出
- 可以通过查询标签的项目来找到每个标签内的项目
数量
用更多数据更新问题,我(我们)可以完善答案)
冒着被标记为重复的风险,开始吧。
我有物品和标签。项目可以有多个标签,每个标签可以是另一个标签的子标签。
我想以树的形式列出标签,以及每个标签内的项目。
本质上,标签是项目的文件夹,除了一个项目可以在多个位置。
这是正确的方法吗?
/items/
i123 : {
Label : "i am an item",
Tags : { tagid: t234}
}
/tags/
t234 : {
Label : "i am a Tag",
Parent: {tagid: t567}
}
我有点不确定自己是否做对了。当然,我确实通读了 firebase 上令人沮丧的文档和教程,我也确实看过其他类似的问题。
我被困在 RDBMS 中,似乎无法理解 nosql 概念,这就是为什么我希望在这里获得一些关于这里用例的指导。
谢谢。
根据评论者的要求,提供有关用例的更多信息。
我正在尝试显示标签树,就像这样
I am tag One
I am second tag
this is a child tag
here is a child's child tag
another child tag
I am a root level tag again
// etc... you get the idea
还有物品,物品可以在多个标签中。此处的显示与文件浏览器中的显示完全一样,真的。除了这里,项目可以位于多个地方,即它们可以关联多个标签。
像这个例子,其中 item 334
位于多个位置:
tag 1
item 209
tag 2
tag 21
item 11
item 334
tag 3
item 334
item 586
现在,我想我可以将整个内容存储在一个 JSON 对象中,并根据需要进行更新,但我感兴趣的是可以通过标签和项目标签进行搜索。所以在我虚弱的新手头脑中,我假设我应该能够有一个 URL /tags/
我可以遍历以获取与标签匹配的项目。 /items/
也是如此,因此我可以在标签上进行关键字匹配。
关于 SO 的其他答案描述了为事物创建索引的方法,这就是为什么我将标签引用存储在我的项目对象中。我正在努力解决这方面的细节问题。
我越想越倾向于将所有内容简单地存储在一个大的嵌套对象中,但我认为这不是一个好主意。如果我这样做的话,我特别不喜欢多次存储一个项目的想法。
RDB 世界里的生活更轻松,因为我知道我在做什么 :P
此结构符合您问题的标准,但问题中确实没有信息来组合可靠的答案。
items
item_00
tag_00
tag_01
tag_02
item_01
tag_02
item_02
tag_01
tags
tag_00
parent: false
child: tag_01
tag_01
parent: tag_00
child: false
tag_02
parent: false
child: false
在这个例子中,
- 项目可以有很多标签
- 每个标签都可以是另一个标签的子标签(并且跟踪 parent:child 关系)
- 标签以树的形式列出
- 可以通过查询标签的项目来找到每个标签内的项目 数量
用更多数据更新问题,我(我们)可以完善答案)