【问题标题】:Is it a good approach to use firebase once method when retrieving all posts on ionViewWillEnter?在 ionViewWillEnter 上检索所有帖子时使用 firebase once 方法是否是一种好方法?
【发布时间】:2019-06-23 06:40:09
【问题描述】:

我正在使用 once 方法从 firebase 检索所有帖子(新闻)并将其显示在主页选项卡(应用启动时的第一个选项卡)上:

get_all_posts(){

 this.posts = [];
 firebase.database().ref('/posts/').once('value').then(snapshot => {
   .... //rest of the code
 }
}

这将在 ionViewWillEnter() 中触发:

ionViewWillEnter(){
   this.get_all_posts();
}

在这种情况下,get_all_posts 方法会在每次按下“home”选项卡时触发,对吧?这将再次从数据库或整个会话(从打开应用程序到关闭手机上运行的应用程序)获取所有帖子,仅显示从第一次检索到的新闻?

【问题讨论】:

    标签: javascript firebase ionic-framework firebase-realtime-database


    【解决方案1】:

    第一次使用once() 检索到的新闻将从您要显示的引用中获取所有数据,这将仅获取数据一次,然后将侦听器与引用分离。当您再次按下主页按钮时,它将再次获取属于该引用的数据并将其从数据库中提取,如果有新内容将显示,如果没有,将显示第一个获取的数据。

    根据你的问题

    在检索所有内容时使用 firebase once 方法是否是一种好方法 ionViewWillEnter 上的帖子?

    • 是的,在我看来,只要求一次数据然后将其显示给用户是一个很好的做法,因为如果您使用on(),您将始终在聆听新的数据和您的主屏幕可能会在用户看到第一个获取的新闻之前更新为新内容。

    【讨论】:

    • 我实际上不同意这个笼统的回答。这取决于:如果您希望用户会在应用程序的一个会话中多次访问主屏幕,那么多次执行once() 意味着您正在多次加载数据。如果您的数据在这些访问之间基本上没有变化,那么您正在重新加载数据并浪费用户的带宽。因此,在这种情况下,最好让侦听器在导航时保持活动状态,这样当他们重新访问时数据仍然可用。
    • 正确的答案是它取决于你的应用程序的用例和使用情况,而这些都是只有你才能回答的事情。 once 可以工作,on 也可以。更好的与 Firebase 无关,而与您的应用有关。研究你的用例列表和(更重要的是)你的用户如何使用应用程序(以及在什么样的设备/连接上)。
    • 很好的信息弗兰克,是的,我忘了写带宽使用情况,这是一个非常重要的话题
    • 嗨@FrankvanPuffelen,感谢您的解释,我关心的正是您提到的“用户带宽”,例如我的帖子就像“facebook 提要”。有多个用户正在更新许多帖子。所以每次按下主页选项卡时,我都想获取所有帖子(包括最新帖子)。我不确定哪种方法会减少用户数据的消耗。经过您的解释,似乎我应该使用“.on”,因为它不会每次都再次加载整个“帖子”,而只会寻找减少用户数据的新“帖子”吗?
    • On() 将获取数据每次对该引用进行更改时,一次只会执行一次相同的操作,然后每次按下主页按钮时
    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2014-12-19
    • 2014-04-14
    • 1970-01-01
    • 2014-05-18
    • 2013-05-23
    相关资源
    最近更新 更多