2017-06-13 18 views
1

我正在开展非常大型的项目。最后,由于用户友好和简单,我选择了Android和Firebase。我打算多生几个孩子像以下:如何在Firebase中制作关系数据库?

products 
1 
name: 
"p1" 
2 
name: 
"p2" 


route 
1: 
"xyz" 
2: 
"abx" 

这是一个用户的情况: 如果用户更新路线1期权和看跌期权“约翰”而不是“XYZ”,然后将其命名1应更新为“X1 '而不是'p1'。

其中一种方法是通过android编程方式使用像'ondatachange()'这样的方法但我想在服务器端做到这一点。我不想每次写'x'路由时产品'a'都应该在android应用中更新。

我们如何在firebase上构建关系数据库?

请记住,不会有两个表,但会有50多个键值对。

+0

会有多个数据库,或者一个数据库中的多个孩子?实时数据库并不适合您所描述的内容,但仍然有可能。在我提出建议之前,我只想澄清一下。 –

+0

对不起,我的错字!它的'孩子'不是数据库。将有多个孩子和他们的多个子孩子来“app-name”数据库。 –

回答

2

我同意你不想在客户端做所有这些工作! Firebase的云端功能是一个不错的选择。您可以在写入数据库中的路径时触发函数,然后更改其他相关路径。看看这些资源,了解更多:

Getting Started with Cloud Functions for Firebase

GitHub samples

Cloud Functions for Firebase documentation

Writing a Database Trigger

Writing a Cloud Storage Trigger: Part 1

Writing a Cloud Storage Trigger: Part 2

+0

仁,谢谢你和其他Firebase团队为这样伟大的视频!我可能还会链接到此系列:https://www.youtube.com/watch?v=WacqhiI-g_o&list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s,重点在于非规范化并使用云功能传播更新。 –

+0

非常感谢Jen!我肯定会与我的开发团队讨论并回复你!希望如果你能够upvote我的问题! –

+0

当然,约翰!如果您有任何其他问题,请告诉我。 –

0

您可以使用firebase admin sdk或firebase函数来侦听更改。 该代码将是这个样子:

exports.routeUpdated = functions.database.ref("route/{id}").onWrite(event => { 
    // read the event value/s you need 
    const id = // id of the product you want to update 
    let updates = {}; 
    //set updates like updates['/name'] = ... 
    admin.database().ref('products/' + id).update(updates).then(() => { 
     //... 
    }); });