伙计们我正在尝试学习Firebase框架,我确实对存储数据有疑问,据我所知,数据存储为Firebase数据库中的整个JSON
文件。
假设我的数据模型很少(只是为了简化我的描述):
用户和文章
使用Firebase SDK,我们可以使用非常简单的查询来简单地创建用户。 Firebase用户有uid
我可以将其用于我的目的。我现在的一般问题是如何将uid
与我的数据绑定。
如果我错了,请纠正我,但我打算使用从Firebase检索到的uid
在Realtime DataBase中创建几个节点,如下所示:
{
"users": {
"$uid": {
"name": "Alex",
"lastname": "Matrosov"
},
"$uid": {
"name": "John",
"lastname": "Malkovich"
}
}
}
因此,当我创建/登录用户时,我计划将相关信息添加到用户/用户节点。
然后我想存储用户文章
{
"articles": {
"$article_id": {
"name": "Some name",
"$uid": "32431kjkjfj232"
},
"$article_id": {
"name": "Some name",
"$uid": "5555fffflllll"
}
}
}
据我所知,当我要求文章时,它会包含所有文章吗?如果我正确理解这个uid和数据绑定,请告诉我。
答案 0 :(得分:1)
好吧,我会说你几乎是对的。只是几点说明:
在文章的JSON结构中,由于'$ uid'字段上的'$'美元标记通常是指firebase数据库中的变量,我建议你将其更改为'userUID'之类的其他内容或任何你想要的。将结构留下这样的东西:
{
"articles": {
"$article_id": {
"name": "Some name",
"userUID": "32431kjkjfj232"
},
"$article_id": {
"name": "Some name",
"userUID": "5555fffflllll"
}
}
}
然后,您只需按以下方式查询:
let articlesRef = Database.database().reference(withPath: "articles")
articlesRef.observe(.value) { snapshot in
// Snopshot will contain all articles on your db reference.
print(snapshot)
}
let userUID = "..."
let articlesByUser = articlesRef.queryOrdered(byChild: "userUID").queryEqual(toValue: userUID)
articlesByUser.observe(.value) { snapshot in
// In this case, snapshot will contain all articles that has the 'userUID' key equal to what you've passed (what in this case, is the value of userUID constant.)
print(snapshot)
}