【问题标题】:Property 'docs' does not exist on type 'QuerySnapshot<DocumentData>[]'类型“QuerySnapshot<DocumentData>[]”上不存在属性“docs”
【发布时间】:2021-08-11 13:51:06
【问题描述】:

我在以下代码中收到此错误:

“QuerySnapshot[]”类型上不存在属性“docs”

我尝试首先从 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.docs.map((snapshot: { id: string; }) => {
       return db
        .collection('tasks')
        .doc(snapshot.id)
        .set({ completed: false }, { merge: true })
     });
    await Promise.all(actionsPromises);
    return null;
});

【问题讨论】:

标签: javascript firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

actionsPromises 不是您可以访问.docs 属性的QuerySnapshot。它是QuerySnapshots 的数组。您将不得不遍历 每个 查询快照中的文档。

    const actionsPromises = []
    taskDocs.forEach((userTasksDocs) => {
      userTasksDocs.docs.forEach((taskDoc) => {
        actionsPromises.push(
          db
            .collection('tasks')
            .doc(taskDoc.id)
            .set({ completed: false }, { merge: true })
        );
      });
    });
    await Promise.all(actionsPromises);

【讨论】:

  • 错误已解决,但触发时代码不起作用
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 2018-10-15
  • 2023-01-19
  • 1970-01-01
  • 2018-10-05
  • 2021-01-09
  • 2021-07-10
相关资源
最近更新 更多