node.js - “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;
});
解决方案
QuerySnapshot类,不包含任何id
属性。但是,QueryDocumentSnapshot可以。根据文档,id是字符串类型并提供文档的 ID。这意味着您需要使用forEachsnapshot
遍历对象以获取其类型为 的子对象。现在,您可以简单地为每个文档使用该属性,并在您的参考中进一步使用它。QueryDocumentSnapshot
id
推荐阅读
- sum - 如何计算访问子表单中相同数据的总和
- java - 我正在编写一个 Java 程序,该程序旨在根据用户的输入与用户一起播放 20 个问题的版本
- amazon-redshift - 从redshift表中查询数据,数据类型为timestamp的列
- java - 使用 ArrayList 创建一个动态二维整数数组
- c# - Xamarin.Forms 手势识别器 - 事件“View.GenericMotion”只能出现在 += 或 -= 的左侧
- php - 将数组多维插入数据库
- javascript - 将keepAlive设置为true时Vue keep-alive标签不起作用
- java - Java EE:与返回帮助类实例的方法的接口。馊主意?
- python - Python-sklearn 我正在尝试使用来计算函数的半高全宽
- logging - 如何在 std.experimental.logger 中使用来自 loglevel 的级别?