我阅读了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:用户滚动时我需要使用回收站视图(不是列表视图).谢谢
我正在尝试使用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.
因此,我在 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
我已阅读下面的所有问题,但在文档中找不到任何内容来描述如何同步集合并仅从集合中接收已更改的文档。我的同步集合中有超过 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)
}
我目前正在编写一个用于学习目的的 react + Firebase 项目,我想知道我应该采用哪种方法来有效地读取 Firebase。
假设我有一个名为 product 的只读集合,其中包含大约 5000 个文档,因此当用户访问我的 react 应用程序时,每次访问将收取 5000 次读取费用。
由于如果用户垃圾邮件刷新以响应应用程序,这会相当快地消耗读取计数,是否有任何正确的方法可以从 firebase firestore 读取数据?
将产品信息存储在 localstorage 中
使用来自 firebase 的 SOURCE.CACHE
限制读取查询?
这是我目前能想到的,如果您的应用程序构建设计中有任何黄金标准或程序,请告诉我。
谢谢你。