根据子属性(子集合)对firestore进行排序

Fel*_*ipe 2 javascript node.js firebase google-cloud-firestore

使用新的Firestore,我的结构如下所示:

{
    ...
    "username": "mr_jones",
    "date_created": 1508395138572,
    "stats": {
        "posts": 143,
        ...
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

根据文档,我可以对查询进行排序和限制,以便基于where子句过滤数据。如何根据这些数据排序stats.posts

usersRef.orderBy('stats.posts').limit(15);
Run Code Online (Sandbox Code Playgroud)

Dan*_*ath 7

看起来您的代码中有错字:

usersRef.orderBy('stats.post').limit(15);
Run Code Online (Sandbox Code Playgroud)

字段名称应stats.posts根据您之前的结构:

usersRef.orderBy('stats.posts').limit(15);
Run Code Online (Sandbox Code Playgroud)

我已经仔细检查了这项工作。在控制台中,我创建了一个名为的集合tester,该集合存储4个文档。每个文档的stats.posts属性设置为1到4。下面的代码打印出1、2、3。如果删除限制,则打印出1、2、3、4。它会打印出2、1、3、4

db.collection('tester').orderBy('stats.posts').limit(3).get().then(function(querySnapshot) {
    querySnapshot.forEach(function(documentSnapshot) { 
        console.log(documentSnapshot.data().stats.posts);
    });
});
Run Code Online (Sandbox Code Playgroud)