2017-06-13 43 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(() => { 
     //... 
    }); });