相关疑难解决方法(0)

如何使用Android对Firestore进行分页?

我阅读了Firestore文档和互联网上的所有文章(stackoverflow)关于Firestore分页但没有运气.我试图在docs中实现确切的代码,但没有任何反应.我有一个基本的数据库项目(超过1250或更多),我想逐步得到它们.通过滚动来加载15个项目(到数据库中的最后一项).

如果使用docs代码:

// Construct query for first 25 cities, ordered by population
Query first = db.collection("cities")
    .orderBy("population")
    .limit(25);

first.get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
    @Override
    public void onSuccess(QuerySnapshot documentSnapshots) {
        // ...

        // Get the last visible document
        DocumentSnapshot lastVisible = documentSnapshots.getDocuments()
            .get(documentSnapshots.size() -1);

        // Construct a new query starting at this document,
        // get the next 25 cities.
        Query next = db.collection("cities")
            .orderBy("population")
            .startAfter(lastVisible)
            .limit(25);

        // Use the query for pagination
        // ...
    }
});
Run Code Online (Sandbox Code Playgroud)

怎么做?文档没有太多细节.

PS:用户滚动时我需要使用回收站视图(不是列表视图).谢谢

java android firebase google-cloud-firestore

15
推荐指数
2
解决办法
3860
查看次数

Firebase Firestore上的ServerTimestamp始终为null

我正在尝试使用Firebase Firestore在Android客户端中添加时间戳字段.

根据文件:

用于标记要使用服务器时间戳填充的日期字段的注释.如果正在编写的POJO对于@ ServerTimestamp-annotated字段包含null,则它将替换为服务器生成的时间戳.

但是当我尝试时:

@ServerTimestamp
Date serverTime = null; // I tried both java.util.Date and java.sql.Date

//...

Map<String, Object> msg = new HashMap<>();
// ... more data
msg.put("timestamp", serverTime);
Run Code Online (Sandbox Code Playgroud)

在Cloud Firestore数据库中,此字段始终为null.

java android firebase google-cloud-firestore

8
推荐指数
2
解决办法
3423
查看次数

带有 Firebase 数据的 Angular 应用:为什么我会看到上一页的数据?

因此,我在 Firebase 上托管了一个 Angular 9 应用程序,并使用 Firestore 存储数据。我有一个看起来很简单的问题,但我无法理解它为什么会发生。我已经对应用程序进行了大量简化,以找到导致此问题的根本原因,并将尝试在下面尽可能详细地解释该问题。

该应用程序:我有 2 个页面,一个主页和一个交易页面。两个页面都从同一个 Firebase 集合“交易”中读取。但是,在主页上,我想显示 4 个最近的交易(按日期排序,降序),而在交易页面上,我想显示 10 个最有利可图的交易(按金额排序,降序)。目前,我只是将数据记录到控制台进行调试。在记录数据之前,我还对其进行了轻微的操作(参见下面的代码)。

问题:当我在主页上开始时,我可以在控制台中按预期看到我最近的 4 个交易。但是,当我转到“交易”页面时,它会再次在控制台中记录 4 个最近的交易,这些交易应该只显示在主页上。大约一秒钟后,它会显示预期的 10 个最有利可图的交易。

代码:这是我的 home.page.ts 代码:

  txSubscription: Subscription;

  constructor(
    public afAuth: AngularFireAuth,
    private readonly firestore: AngularFirestore
  ) { }

  // Function to get the 4 most recent transactions
  async getRecentTransactions() {
    this.txSubscription = this.firestore
      .collection('transactions', ref => ref.orderBy('date', 'desc').limit(4))
      .valueChanges()
      .subscribe(rows => {
        this.recentTransactions = [];

        rows.forEach(row => {
          let jsonData = {};
          jsonData['ticker'] = (row['ticker'].length …
Run Code Online (Sandbox Code Playgroud)

javascript firebase typescript angular google-cloud-firestore

5
推荐指数
1
解决办法
193
查看次数

Firestore——仅获取大型同步集合中已更改的文档

我已阅读下面的所有问题,但在文档中找不到任何内容来描述如何同步集合并仅从集合中接收已更改的文档。我的同步集合中有超过 500 个文档(使用redux-saga-firebasesyncCollection),但通常只有大约 100 个发生更改。在任何给定时间,更改的次数会更少,但目前,即使只有一个更改,我也会收回所有 500 多个文档,这会导致 500 多个读取。不理想,而且会让我付出巨大的代价。

这是我使用 redux-saga-firebase 的代码,但普通的 firebase 代码答案也足够了。如何获得发送集合中已更改文档的同步响应?

export function* getPlayersFromDb() {
  yield fork(
    rsf.firestore.syncCollection,
    'players',
    { successActionCreator: response => ({
            type: t.GET_PLAYERS_FROM_DB_SUCCESS,
            payload: [...response],
        }),
        failureActionCreator: () => ({
            type: t.GET_PLAYERS_FROM_DB_FAILURE,
            payload: [],
        }),
        transform: response => messageTransformer(response),
    }
);
Run Code Online (Sandbox Code Playgroud)

}

Firestore 只同步差异吗?

Realm 与 Firestore 上的大型集合同步 - 架构问题/问题

如何使用缓存避免不必要的 Firestore 读取

Firestore 同步到底有什么作用?

javascript firebase google-cloud-firestore

2
推荐指数
1
解决办法
1769
查看次数

如何优化云 Firestore 中的读写操作?

我目前正在编写一个用于学习目的的 react + Firebase 项目,我想知道我应该采用哪种方法来有效地读取 Firebase。

假设我有一个名为 product 的只读集合,其中包含大约 5000 个文档,因此当用户访问我的 react 应用程序时,每次访问将收取 5000 次读取费用。

来源:Cloud Firestore:读取是如何计算的?

由于如果用户垃圾邮件刷新以响应应用程序,这会相当快地消耗读取计数,是否有任何正确的方法可以从 firebase firestore 读取数据?

  1. 将产品信息存储在 localstorage 中

    • 一旦 react app 成功加载数据,继续将产品信息保存到 localstorage 中,以避免将来不必要的加载。
  2. 使用来自 firebase 的 SOURCE.CACHE

  3. 限制读取查询?

    • 限制每次加载的固定数量的文档返回,但在一天结束时,我仍然必须加载完整的文档集,因此我对此持怀疑态度。

这是我目前能想到的,如果您的应用程序构建设计中有任何黄金标准或程序,请告诉我。

谢谢你。

firebase reactjs google-cloud-firestore

1
推荐指数
1
解决办法
725
查看次数