我目前正在构建一个iOS应用程序,它基本上允许用户发布他们想要销售的商品,然后其他用户可以根据位置搜索要购买的商品。我应该如何构建我的数据库?
我目前有以下结构:
users {
userID: {
profileImage:
username:
}
.
.
.
}
posts: {
userID: {
postID: {
description:
imageUrl:
creationDate:
price:
location:
}
.
.
.
.
}
.
.
.
.
}
希望我所要求的是有道理的。换句话说,像OfferUp或Letgo这样的应用程序如何构建他们的数据库?感谢!!!
答案 0 :(得分:1)
很难说 - 这取决于您的应用程序的其余部分是如何工作的,但是IMO而不是postID
userID
下的userID
,您最好将posts: {
postID: {
description:
imageUrl:
creationDate:
price:
location:
userID:
}
}
添加到posts
邮政对象。
editable/writeable
原因;
允许您在所有项目中运行搜索,您不需要搜索每个用户 - 然后搜索每个项目。深度搜索记录是不可能的。
您的数据库规则可以保持auth.uid
可读,但userID
= userID
只有set
。
通过这种方式嵌套,仍然可以UIDoc.Document
。
答案 1 :(得分:1)
我唯一要改变的是,如果您希望能够显示待售物品的列表,则应将列表所需的信息提取到另一个根级别的集合中。您应该在该部分中添加较少的细节,因为Google表示它将允许更快地下载数据,同时使用更少的数据。 (来源:https://firebase.google.com/docs/firestore/manage-data/structure-data)
所以,像这样:
{
users: {
userID: {
profileImage:
username:
}
.
.
.
}
posts: {
zipCode: {
postID: {
userID:
description:
imageUrl:
creationDate:
price:
location:
}
.
.
.
.
}
.
.
.
.
}
listOfPosts: {
zipCode: {
postID: { //Only put essential information for your list of posts here
imageURL:
price:
location:
}
}
}
}