Firestore:按Firestore时间戳排序导致UnhandledPromiseRejectionWarning

时间:2019-05-01 23:41:23

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

我尝试从Firestore获取文档,并按其时间戳对其进行排序。时间戳实际上是“ firebase格式”(见下文)

My date format

代码

我尝试使用此代码

const querySnapshot = await db
    .collection("placeVisits")
    .where("placeId", "==", req.params.placeId)
    .orderBy("time", "desc")
    .get();

但是会产生 error: (node:8356) UnhandledPromiseRejectionWarning: Error: 9 FAILED_PRECONDITION: The query requires an index. You can create it here: https://console.firebase.google.com/...

但是,这很好(当然不能排序)

const querySnapshot = await db
    .collection("placeVisits")
    .where("placeId", "==", req.params.placeId)
    .get();

我不知道该如何解决或为什么会发生。是因为Firestore快照无法排序还是什么?

1 个答案:

答案 0 :(得分:1)

.where("placeId", "==", req.params.placeId).orderBy("time", "desc")上的查询需要一个综合索引,该索引不会由Firestore自动创建。

错误消息包含一个链接。如果单击该链接,它将带您到Firebase控制台中的页面以创建必要的索引。所有字段都应在此处预先填充,因此您只需要单击一个按钮即可。