我阅读了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:用户滚动时我需要使用回收站视图(不是列表视图).谢谢
我一直在关注以下文档:https : //firebase.google.com/docs/firestore/query-data/queries#collection-group-query
我的数据结构大致如下:
/teams/{teamid}
{
displayName: "Company X Team",
owner: "userid",
}
/teams/{teamid}/invites/{emailAddressAsKey}
{
someProp: "my data"
}
Run Code Online (Sandbox Code Playgroud)
在我的网络应用程序中,我想搜索所有不同的团队记录,以找到一个邀请,其 ID/密钥等于我传入的电子邮件地址。阅读文档后,我认为集合组查询就是我的意思寻找。但是,我的情况与示例不完全匹配。我想匹配键,而不是文档中的道具。我想我可以再次添加电子邮件地址作为道具,但这感觉不对。
在我的情况下,用户可以“喜欢”另一个用户的个人资料。结果,我为每个用户创建了一个名为“ likedBy”的子集合,在其中为特定用户创建了一个文档,例如:
users(col)-> User A(doc)-> LikeedBy(col)-> User B(doc),User C(doc)
因此,在极少数情况下删除用户,我想删除该用户的所有喜欢的问题。
我只是不确定这是否可能(一种解决方法是将userId再次保存在所述文档中并进行查询)。
我基本上正在寻找的是这样的:
db.collectionGroup('likedBy').where(firebase.firestore.FieldPath.documentId(), '==', "User A").get();
Run Code Online (Sandbox Code Playgroud)
问题是,我无法在Firestore控制台中为documentId创建索引。