我正在使用Firebase创建一个NoSQL数据库,但因为我是一个SQL思想者,所以我需要一些关于Firebase查询和NoSQL数据结构的建议。
我正在为一个使用离子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保存到文档中,以防存储空间更大。你对此有什么想法?
发布于 2016-09-20 22:58:58
Firebase客户端始终检索完整的节点。不可能只获取节点属性的一个子集。
像往常一样:如果您在数据模型上实现用例时遇到问题,请更改数据模型以适合您的用例。因此,在这种情况下,这意味着您可以将名称和缩略图拆分为一个单独的节点。
MadeListinfo : {
Id : {
Name: string
Thumb: base64 56x56 pixels (image)
}
}https://stackoverflow.com/questions/39596678
复制相似问题