【问题标题】:Firestore 9 onSnapshot TypeScripot error: Spread types may only be created from object types. ts(2698)Firestore 9 onSnapshot TypeScripot 错误:传播类型只能从对象类型创建。 ts(2698)
【发布时间】:2021-12-31 17:57:02
【问题描述】:

在 Firestore 9 onSnapshot 函数中调用 data() 方法时,它会返回一个包含文档中所有字段的对象。

但在我下面的代码中,...doc.data() 上有一个 TypeScript 错误,上面写着:Spread types may only be created from object types. ts(2698)

那么如果data() 返回一个对象,为什么 TypeScript 会抱怨它不是一个对象?

const unsubscribe = onSnapshot(
    collectionOrdered,
    (snapshot) => {
      snapshot.docs.forEach((doc) => {
        documents.push({ ...doc.data(), id: doc.id });
      });
      error.value = null;
      console.log(documents);
    },
    (err) => {
      console.log(err.message);
      documents.splice(0);
      error.value = err.message;
    }
  );

【问题讨论】:

    标签: javascript typescript firebase google-cloud-firestore


    【解决方案1】:

    我很难找到它,但看起来 snapshot 中的 doc 需要输入为 doc: DocumentData

    完整代码示例:

    const unsubscribe = onSnapshot(
        collectionOrdered,
        (snapshot) => {
          snapshot.docs.forEach((doc: DocumentData) => {
            documents.push({ ...doc.data(), id: doc.id });
          });
          error.value = null;
          console.log(documents);
        },
        (err) => {
          console.log(err.message);
          documents.splice(0); //Clears reactive array
          error.value = err.message;
        }
      );
    

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 2020-06-10
      • 2020-08-02
      • 2018-07-21
      • 2020-05-26
      • 2021-08-02
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多