2016-09-20 44 views
0

我使用Firebase創建NoSQL數據庫,但由於我是SQL思想者,因此我的想法需要一些關於Firebase查詢和NoSQL數據結構的建議。NoSQL數據結構用於選擇Firebase和查詢字段子集

我正在爲使用Ionic 2(AngularJS 2)的移動應用程序進行一些實驗,我的顧慮是關於速度(用戶時間)和我的表的正確結構。

在App我的東西,用戶已經取得和用戶可能是一個集團的一部分,現在在脫正常化從火力地堡的網站,我做這個模式列表

Users : { 
    Id : { 
     Name: string 
     Picture: base64 56x56 pixels (image) 
     Addresses : {} 
     Groups : { 
      Worker: boolean 
      Student: boolean 
     } 
    } 
} 

Groups : { 
    Worker : { 
    Desc: string 
    Members : { 
     Userid: boolean 
    } 
    } 
    Student : { 
    Desc: string 
    Members : { 
     Userid: boolean 
    } 
    } 
} 

Made : { 
    Id : { 
    Name: string 
    Thumb: base64 56x56 pixels (image) 
    Desc: string 
    User: userid 
    Images: base64 dimensions could vary 
    } 
} 

我有什麼要做的是顯示用戶所做的事情列表,只需點擊名稱和縮略圖像等少數信息,即可打開其他信息的描述。

現在,如果我用下面的代碼段用於獲取列表,它返回我所有的信息,但一開始我只需要姓名和拇指(或別的東西)

return firebase.database().ref('/made/' + madeId) 
.once('value').then(function(snapshot) { 
    var username = snapshot.val().username; 
    // ... 
}); 

那麼,有沒有什麼辦法在firebase中做類似(?)的操作:

SELECT name, thumb FROM Table_Made 

爲了僅獲取每個查詢所需的字段?或

最好有另一個只有名稱和圖像的表?

拇指和圖像都是一個好主意嗎?爲了加快JSON,因爲拇指通常比圖像小。

看看Firebase文檔,似乎小於10mb的圖像可以作爲base64保存到文檔中,並且在存儲上更大。你有什麼想法?

+0

事實上,Firebase數據庫對節點大小有10MB的限制,並不意味着您應該在數據庫中存儲最大爲該大小的映像。您不會查詢結構的用戶生成數據可以更有效地存儲在Firebase存儲上或從中提供。 –

+0

限制自己每個帖子btw一個問題。否則,很難一次性回答所有問題。 –

回答

2

Firebase客戶端始終檢索完整的節點。沒有辦法只獲得節點屬性的一個子集。像往常一樣:如果您在數據模型上實現您的用例時遇到問題,請更改數據模型以適合您的用例。所以在這種情況下,這意味着您可以將名稱和縮略圖分割成單獨的節點。

MadeListinfo : { 
    Id : { 
    Name: string 
    Thumb: base64 56x56 pixels (image) 
    } 
} 
+0

謝謝你的回答。這正是我想要在不同部分拆分數據模型並只獲取我需要的數據。 當然這意味着要更加小心地編寫更改。 – soniyj

+1

如果我的回答很有用,請點擊左側的upvote按鈕。如果它回答了您的問題,請點擊複選標記以接受它。這樣別人就知道你已經(充分)幫助了。 –