首页 > 解决方案 > “QuerySnapshot”类型上不存在属性“id”'

问题描述

我在以下代码中收到此错误:“QuerySnapshot”类型上不存在属性“id”。

我的代码给出了一个错误。我试图首先从 Firestore 查询用户列表(在集合中),而不是使用数据从其他集合中查询。似乎我在更新列表时出错,这可能是由于查询部分的错误引起的。

const dailyTaskFunction = functions.pubsub.schedule("0 0 * * *").timeZone("GMT +3").onRun(async () => { 
        
    const users = await db.collection("users").where("location", "==", "GMT+3").get();
    const taskPromises = users.docs.map((doc) => {
        return db
          .collection("tasks")
          .where("dailyTasks", "==", true)
          .where("completed", "==", true)
          .where("userID", "==", doc.get("userID"))
          .get();
    });
    const taskDocs = await Promise.all(taskPromises);
    const actionsPromises = taskDocs.map((snapshot) => {
        return db.collection("tasks").doc(snapshot.id).set({ completed: false }, { merge: true });
    });
    await Promise.all(actionsPromises);
    return null;
});

标签: node.jstypescriptgoogle-cloud-firestoregoogle-cloud-functions

解决方案


QuerySnapshot类,不包含任何id属性。但是,QueryDocumentSnapshot可以。根据文档,id是字符串类型并提供文档的 ID。这意味着您需要使用forEachsnapshot遍历对象以获取其类型为 的子对象。现在,您可以简单地为每个文档使用该属性,并在您的参考中进一步使用它。QueryDocumentSnapshotid


推荐阅读