【问题标题】:Firebase Error: TypeError: Cannot use 'in' operator to search for '_delegate' in undefinedFirebase 错误:TypeError:无法使用“in”运算符在未定义中搜索“_delegate”
【发布时间】:2022-01-18 18:24:44
【问题描述】:

我是 firebase 新手,过去两天在查询和删除集合中的文档时遇到了一些困难。具体来说,每次启动服务器时,我都会尝试清除我的整个公司虚拟数据集合,然后循环遍历虚拟数据并将其写入集合(以防止重复)。

我已经能够获取我公司的虚拟数据并将其写入我的“公司”集合中,这没有问题。问题是当我尝试从集合中删除文档时;它不会删除,并且在将检索变量传递给 deleteDoc() 方法时似乎会引发以下错误。

注意:我决定先尝试删除一个文档。如果我能成功地做到这一点并且它反映在 firebase 集合中,那么我应该能够毫无问题地清除整个集合。

TypeError: 不能使用 'in' 运算符在 undefined 中搜索 '_delegate'

我了解“in”关键字仅在检查对象上是否存在属性时才有效。我在函数的每个点记录了数据,以确保我正确引用了文档并将适当的数据类型传递给 deleteDoc() 函数(这将是一个对象)。

这是我将虚拟数据写入数据库的代码(工作正常):

export const dummyDataToFirebase = async() => {
  try {
    const batch = writeBatch(db);
    dummyData.forEach(doc => {
      addDoc(companyRef, doc)
      console.log(doc)
    })
    await batch.commit();
    console.log('success!')

  } catch (error) {
    console.error(error, 'try again!');
  }
} 

这是我从数据库集合中删除文档的代码(问题)

const deleteOne = async () => {
  try {
    const docRef = doc(companyRef, '86e9cade14e2a972c526db4b7c828ed7')
    const retrieve = await getDoc(docRef)
    console.log(retrieve)
    await deleteDoc(retrieve)
    if(retrieve.exists()) {
      console.log('still exists')
    } else {
      console.log('it worked!')
    }
  } catch (error) {
    console.error(error, 'nope')
  }
}
deleteOne()

这是我从我写的 deleteDoc 函数中得到的错误:

index.js:1 TypeError: 无法使用“in”运算符在未定义中搜索“_delegate” 在 Tc (index.esm2017.js:14691) 在 ph (index.esm2017.js:17522) 在 deleteOne (Firebase.jsx:101) 'nope'[在此处输入图像描述][1]

检索 console.logged 的​​对象 [1]:https://i.stack.imgur.com/srxpq.png 控制台中的错误 [2]:https://i.stack.imgur.com/p2xQk.png

【问题讨论】:

  • ~我也遇到了这个错误。看起来像一个错误。~ nvm 我的 ref 未定义。

标签: javascript reactjs firebase google-cloud-firestore runtime-error


【解决方案1】:

deleteDoc 需要DocumentReference。你传递的是DocumentSnapshot。如果您使用deleteDoc(docRef),则不应出现此错误。

【讨论】:

    猜你喜欢
    • 2016-11-20
    • 2015-10-12
    • 2020-04-08
    • 2021-04-16
    • 1970-01-01
    • 2018-05-02
    • 2015-02-19
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多