子属性上的firestore orderby(子集合)

时间:2017-10-20 00:11:51

标签: javascript node.js firebase google-cloud-firestore

使用新的firestore,我有一个如下所示的结构:

{
    ...
    "username": "mr_jones",
    "date_created": 1508395138572,
    "stats": {
        "posts": 143,
        ...
    },
    ...
}

根据文档,我可以order and limit我的查询,以便根据where子句过滤数据。如何根据stats.posts订购此数据?

usersRef.orderBy('stats.posts').limit(15);

1 个答案:

答案 0 :(得分:4)

您的代码中似乎有拼写错误:

usersRef.orderBy('stats.post').limit(15);

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

usersRef.orderBy('stats.posts').limit(15);

我已经仔细检查了这项工作。在控制台中,我创建了一个名为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);
    });
});