【问题标题】:How to save Firestore database request on web to make less calls如何在 Web 上保存 Firestore 数据库请求以减少调用次数
【发布时间】:2019-10-23 14:49:04
【问题描述】:

我有一个包含我所有产品的产品页面,每次有人按 F5 时它都会被执行。我想保存所有产品,但是当添加产品时,它可以更新一次以减少所有 api 调用。

//JS文件 我的饼干尝试: 它有效,我每 0.5 天只收到一个 api 调用,但如果我的产品发生更新,我只会在以后得到

//if cookie === undifined
const firestore = firebase.firestore()
firestore.doc("products/phones").onSnapshot(function (doc) {
    if (doc && doc.exists) {
        const products = doc.data().produc
        //Save doc.data().produc in cookie 0.5 day expirery
    }
})

我想保存我的 Firestore 请求客户端,仅在需要更新产品列表时发出 Firestore 请求。

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore


    【解决方案1】:

    您的第二种方法不可能奏效。 firebase.json 文件由 Firebase 托管使用,与 Cloud Firestore 完全无关。

    您的第一种方法可能有效,尽管您没有包含实际确定何时附加onSnapshot 侦听器的代码。但正如您所发现的,每天最多附加两次侦听器意味着您每天最多只能获得两次更新,同时您可能会提供陈旧的数据。

    听起来您必须在提供新数据和减少服务器调用之间做出选择。这是一个相当普遍的权衡。

    还有一些其他方法可以减少服务器最新数据所需的文档读取次数:

    1. 在每个文档中包含数据更新时的时间戳,然后使用查询仅请求新数据。您将在本地存储中保留上次请求/获取数据的时间戳,并在每次查询中使用该时间戳。
    2. 将最近更新的数据聚合到一个或几个文档中,这样您就可以阅读更少的文档。

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多