该查询需要一个索引,但是我已经创建了索引

时间:2019-11-29 13:55:06

标签: firebase dart google-cloud-platform google-cloud-firestore

我收到以下错误

  

W / Firestore(1034):(19.0.0)[Firestore]:侦听查询(用户聊天)   在-messageDate处== M-00710的订单,-名称的位置)失败:   状态{code = FAILED_PRECONDITION,描述=查询需要一个   指数。您可以在这里创建它:   https://console.firebase.google.com/v1/r/project/ ...,cause = null}

当我尝试找到record

时会发生
 void getReply() {
    var userQuery = databaseReference
        .collection(documentId)
        .where('to', isEqualTo: userId)
        .orderBy("messageDate", descending: true)
        .limit(1);
    userQuery.snapshots().listen((data) {
      data.documentChanges.forEach((change) {
        print('documentChanges ${change.document.data}');
      });
    });
  }

这是我的索引

enter image description here

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

您正在使用的查询将需要在“ ”和“ messageDate ”字段上的复合索引,但是您创建的索引似乎在“ 来自”和“ messageDate ”字段。

答案 1 :(得分:0)

在集合userChat上创建一个复合索引,如下所示

messageDate:DESC  to:ASC