冒着被重复标记的风险,这里就出现了。Firebase数据建模指南
我有物品和标签。项目可以有多个标签,每个标签可以是另一个标签的子标签。
我想列出标签作为一棵树,并在每个标签内的项目。
实质上,标签是项目的文件夹,除了项目可以位于多个位置。
这是正确的方法吗?
/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
建模数据的正确方法取决于应用程序如何使用该数据。我们无法为您解答,尽管如果您有这个问题,我们可以为您提供具体的查询服务。除此之外,我建议阅读本文[NoSQL数据建模](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。 –
感谢您的链接。我认为我在描述如何使用数据时非常清楚 – tim