我尝试从Firestore获取文档,并按其时间戳对其进行排序。时间戳实际上是“ firebase格式”(见下文)
代码
我尝试使用此代码
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快照无法排序还是什么?
答案 0 :(得分:1)
在.where("placeId", "==", req.params.placeId).orderBy("time", "desc")
上的查询需要一个综合索引,该索引不会由Firestore自动创建。
错误消息包含一个链接。如果单击该链接,它将带您到Firebase控制台中的页面以创建必要的索引。所有字段都应在此处预先填充,因此您只需要单击一个按钮即可。