Firestore自定义索引无法正常工作

时间:2018-03-04 19:14:47

标签: firebase google-cloud-firestore

在我的firestore数据库中,我有一个名为timeit.Timer的集合,我手动在索引中添加了statesstateId。当我尝试使用云功能访问集合时,它会报告崩溃,指出查询需要建立索引并显示/生成添加索引的链接。但是当我copy_pasted链接时,它没有在索引字段中显示stateName,我根据stateName进行排序。以下是手动索引集合的屏幕截图

enter image description here

这是我获取状态列表的代码

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也列在索引字段中,现在该集合已编入索引,并且按预期工作。这是我的疑惑

  1. 为什么它最初没有显示stateName并在第二次尝试中显示?
  2. 为什么手动索引不起作用?

1 个答案:

答案 0 :(得分:0)

请勿手动添加,只需点击链接,它将使您进入console.firebase。并自动为您创建一个索引。然后它将起作用。