我的数据库应用RESTful层次结构和推送到数组的好方法

时间:2015-09-04 16:19:04

标签: angularjs firebase ionic

我使用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这样的网址不那么人类可读吗?

抱歉我的英语不好!

1 个答案:

答案 0 :(得分:0)

顺序索引可能更具可读性。他们是否更好,取决于你的目标。 Firebase专为高度可扩展的多用户系统而设计,当用户向数据库添加项目时,索引可能会成为瓶颈。

来自Firebase blog post on our push ids

  

我们为协作式多用户应用程序创建了推送ID,以处理许多客户端同时添加到列表的情况。我们需要可以在客户端生成的ID,以便他们不需要等待往返服务器。我们需要它们是唯一的,以便许多客户可以同时将数据附加到同一位置,而不必担心冲突。

您可以自由地提出自己的方案,但这总结了Firebase建议使用推送ID的原因。