首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Firebase数据库:如何获取每个列表的第一条记录

Firebase数据库:如何获取每个列表的第一条记录
EN

Stack Overflow用户
提问于 2017-11-28 21:34:23
回答 1查看 2.5K关注 0票数 0

我有一个嵌套的firebase数据库,其结构如下:

代码语言:javascript
复制
    posts: {
        0: {
            title: "...",
            content: '...',
            comments: [{
                by: "someone"
            }, {
                by: "anotherone"
            }]
        },
        1: {
          ...
        }
    }

现在我想得到每个帖子的第一条评论,所以我试着

代码语言:javascript
复制
firebase.database().ref('/posts/{postId}/comments/0').once('value',function(snapshot){
   snapshot.forEach(function(child){ console.log(child.val());});
})

但我不知道为什么控制台里只有false。那么,有没有人知道哪里出了问题,或者像这样查询是不可能的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 22:46:58

Firebase数据库SDK还将读取整个节点。检索节点数据的子集或仅获取键是不可能的。

要获得每个帖子的第一条评论,你必须已经知道每个帖子的关键字。因为你不能只阅读帖子的关键字,这意味着你必须阅读所有的数据才能获得每个帖子的第一条评论:

代码语言:javascript
复制
firebase.database().ref('/posts').once('value',function(snapshot){
  snapshot.forEach(function(child){ 
    console.log(child.val().comments[0]);
  });
})

虽然这给出了你需要的结果,但它在带宽上是相当浪费的:客户端已经准备好比你需要的更多的数据。与NoSQL数据库中的常见情况一样,更好的解决方案可能需要您更改数据模型以适应您的用例。例如:考虑将每个帖子的最新评论存储在单独的顶级列表中:

代码语言:javascript
复制
latest-comments: {
    0: {
        by: "someone"
    },
    1: {
      ...
    }
}

只要有新的评论发布,你就需要更新这个列表(除了你原来的评论列表)。但作为回报,阅读每个帖子的最新评论现在非常便宜。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47532894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档