我使用firebase with ionic(angularJS)和我第一次使用firebase。我在想我的数据库层次结构,我有点困惑。
myapp {
"gyms": {
"0": {},
"1": {},
"2": {}
},
"users" : {
"0" : {},
"1": {},
"2": {}
},
"sessions" : {
"0" : {
"user_id": {
"session_id": {
"routes": {
"0": {
},
"1": {
},
"2": {
},
}
}
}
},
"1": {},
"2": {}
},
}
RESTful需要什么:
// GYMS
gyms/
GET all gym objects
POST : I put manually a new gym with id: 0, 1, 2 ...
gyms/:gym_id
GET the gym corresponding to the id
exemple : gyms/0
gyms/:gym_id/users
GET all users from a specific gym
// USERS
users/
GET all users
POST create a new user, i would have a user_id numeric like id 0, 1, 2...
users/:user_id
GET the user corresponding to the id
// SESSIONS
sessions/
GET all sessions objects
sessions/:user_id
GET all sessions from a specific user
POST create a new session for the user
sessions/:user_id/:session_id
GET a specific session from a specific user
sessions/:user_id/:session_id/routes
GET all routes from a specific session and user
POST create a new route for the session
sessions/:user_id/:session_id/routes/:route_id
GET a specific route from a specific session and user
对于简历,健身房包含有会话的用户。每个会话都包含路由。每个用户都与健身房相关联,并且每个会话都在用户处。每个会话都包含一些路由。我第一次创建一个JSON数据库,所以,这很好吗?
我说更高我想要0, 1, 2
这样的id,因为我有一个像sessions/12/4/routes/8
这样的RESTful网址。但是我看到了一篇关于数组和推送的文章,其中包含了像fire "-JyNAzZHIoMEpBe39a55"
这样的firebase生成的uniqueID,但是将对象推送到数组并且id为0,1,2的函数是什么?因为像sessions/JyNAzZHIoMEpBe39a55/JyNAzZHIoMEpBe39a57/routes/JyNAzZHIoMEpBe39a57
这样的网址不那么人类可读吗?
答案 0 :(得分:0)
顺序索引可能更具可读性。他们是否更好,取决于你的目标。 Firebase专为高度可扩展的多用户系统而设计,当用户向数据库添加项目时,索引可能会成为瓶颈。
来自Firebase blog post on our push ids:
我们为协作式多用户应用程序创建了推送ID,以处理许多客户端同时添加到列表的情况。我们需要可以在客户端生成的ID,以便他们不需要等待往返服务器。我们需要它们是唯一的,以便许多客户可以同时将数据附加到同一位置,而不必担心冲突。
您可以自由地提出自己的方案,但这总结了Firebase建议使用推送ID的原因。