我正在使用Firebase创建一个NoSQL数据库,但由于我是一个SQL思想家,我的思想需要一些关于Firebase查询和NoSQL数据结构的建议。
我正在使用Ionic 2(AngularJS 2)进行移动应用程序的一些实验,我关心的是速度(用户时间)和表格的正确结构。
在应用程序中,我列出了用户已经制作的内容,用户可以成为群组的一部分,现在遵循Firebase网站的反规范化,我制作了这个模式
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 :(得分:2)
Firebase客户端始终检索完整的节点。没有办法只获得节点属性的一个子集。
像往常一样:如果您在数据模型上实现用例时遇到问题,请更改数据模型以适合您的用例。因此,在这种情况下,这意味着您可以将名称和缩略图拆分为单独的节点。
MadeListinfo : {
Id : {
Name: string
Thumb: base64 56x56 pixels (image)
}
}