FireBase错误:类型错误:无法在'运算符中使用'在未定义的'_Delegate'中搜索'_Delegate' [英] Firebase Error: TypeError: Cannot use 'in' operator to search for '_delegate' in undefined

查看:58
本文介绍了FireBase错误:类型错误:无法在'运算符中使用'在未定义的'_Delegate'中搜索'_Delegate'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我已经能够获取我的公司虚拟数据,并将其写入我的‘Companies’集合,这是没有问题的。问题是当我试图从集合中删除文档时;它没有删除,并且在将检索变量传递给delete eDoc()方法时似乎抛出以下错误。

注意:我决定先尝试只删除一个文档。如果我可以成功完成该操作,并且它反映在FireBase集合中,那么我应该能够毫无问题地清除整个集合。

TypeError:无法使用"In"运算符在未定义的

中搜索"_Delegate"

我知道‘in’关键字只有在检查对象上是否存在属性时才有效。我记录了函数每个点的数据,以确保我正确引用了文档,并将适当的数据类型传递给了delete eDoc()函数(它将是一个对象)。

以下是我将伪数据写入数据库的代码(工作正常):

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()

以下是我从我编写的delete eDoc函数得到的错误:

index.js:1TypeError:不能使用"in"运算符在未定义的文件中搜索"_Delegate" 在Tc(索引.esm2017.js:14691) 在ph值(索引.esm2017.js:17522) at delete eOne(Firebase.jsx:101)‘nope’[在此处输入图像描述][1]

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

推荐答案

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

这篇关于FireBase错误:类型错误:无法在'运算符中使用'在未定义的'_Delegate'中搜索'_Delegate'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆