在我的firestore数据库中,我有一个名为timeit.Timer
的集合,我手动在索引中添加了states
和stateId
。当我尝试使用云功能访问集合时,它会报告崩溃,指出查询需要建立索引并显示/生成添加索引的链接。但是当我copy_pasted链接时,它没有在索引字段中显示stateName
,我根据stateName
进行排序。以下是手动索引集合的屏幕截图
这是我获取状态列表的代码
stateName
这是firebase控制台日志中显示的错误
exports.getStates = functions.https.onRequest((request, response)=>{
const db = admin.firEDIT !estore();
const countryId = request.body['countryId'];
return db.collection("states").where("countryId","==",countryId).where("isDeleted","==","0")
.select("stateId","stateName").orderBy("stateName")
.get().then(snapshot=>{
const states =[];
snapshot.docs.forEach(doc=>{
states.push(doc.data());
});
return response.status(200).json(states);
});
});
我的代码出了什么问题?如何根据Error: The query requires an index. You can create it here: https://console.firebase.google.com/project/functionstest-54bd9/database/firestore/indexes?create_index=EglkaXN0cmljdHMaDQoJaXNEZWxldGVkEAIaCwoHc3RhdGVJZBACGhAKDGRpc3RyaWN0TmFtZRACGgwKCF9fbmFtZV9fEAI
at ClientReadableStream._emitStatusIfDone (/user_code/node_modules/firebase-admin/node_modules/grpc/src/client.js:255:19)
at ClientReadableStream._receiveStatus (/user_code/node_modules/firebase-admin/node_modules/grpc/src/client.js:233:8)
at /user_code/node_modules/firebase-admin/node_modules/grpc/src/client.js:705:12
工作进行排序?
更新1
我使用了firebase控制台日志中提供的链接,然后stateName
也列在索引字段中,现在该集合已编入索引,并且按预期工作。这是我的疑惑
stateName
并在第二次尝试中显示?答案 0 :(得分:0)
请勿手动添加,只需点击链接,它将使您进入console.firebase。并自动为您创建一个索引。然后它将起作用。