javascript - 仅读取 firebase 中的某些字段
问题描述
如果我有一个像
users: {
user1: {
name:'qwert',
id: 123,
num: 9999
},
user2: {
name:'zxcvb',
id: 456,
num: 8888
}
}
如何只读取所有用户的名称?
我的预期结果:
{
user1:{
name:'qwert'
},
user2:{
name:'zxcvb'
}
}
如果我在 JavaScript 中使用它:
ref('users').once('value').then((snap)=>{console.log(snap.val())})
我得到所有用户的所有数据(但我只想要每个用户的名称)
我应该在查询中进行哪些更改以获得预期结果?
任何建议都将受到高度赞赏并且非常有帮助。我尝试搜索文档,但没有得到我想要查找的内容。
我的最终目标是降低读取不必要数据的成本。
解决方案
无法仅从当前数据模型中选择名称,Firebase 始终检索完整节点。因此,您要么必须按照 Peter 的回答,读取所有数据但在客户端提取用户名,要么必须修改数据模型以允许用例。
后者非常简单。如果要加载用户名列表,则应在数据库中存储用户名列表:
users: {
user1: {
name:'qwert',
id: 123,
num: 9999
},
user2: {
name:'zxcvb',
id: 456,
num: 8888
}
},
usernames: {
user1: 'qwert',
user2: 'zxcvb'
}
使用这种结构,只读取名称是微不足道的。
另见: