如何通过布尔值订购Firebase查询

时间:2019-09-20 14:04:37

标签: javascript firebase google-cloud-firestore angularfire

我的Firestore文档中有一个布尔字段。我想按布尔值对集合进行排序。 answer布尔值为true的文档应出现在answer布尔值为false的文档之前。

   const item: AngularFirestoreCollection<any> =
       this.afs.collection(`items`,
          (ref) => ref.where('questionId', '==', questionId)
                      .orderBy('updatedAt', 'desc')
                      .orderBy('answer'));
   return item.valueChanges();

firestore中的项目按以下顺序

items = {[
 {
id: 1,
questionId: x1,
answer: false,
updatedAt: 848939
},
{
id: 2,
questionId: x2,
answer: false,
updatedAt: 848936
},
{
id: 3,
questionId: x3,
answer: true,
updatedAt: 848938
}
]}

查询完成后,我希望第三个项目位于索引0 ...结果的第一项目中。现在我只得到orderedByupdatedAt。

上面的查询没有给我以上要求的结果。 我该如何进行查询?

2 个答案:

答案 0 :(得分:0)

更改答案字段的排序方向:

orderBy('answer', 'desc')

答案 1 :(得分:0)

data types上的文档所述:

  

数据类型:布尔值

     

排序顺序:false

如果您想使用true的文档排在首位,则必须按降序排序:

 .orderBy('answer', 'desc'));