FireBase错误:类型错误:无法在'运算符中使用'在未定义的'_Delegate'中搜索'_Delegate'

Firebase Error: TypeError: Cannot use #39;in#39; operator to search for #39;_delegate#39; in undefined(FireBase错误:类型错误:无法在#39;运算符中使用#39;在未定义的#39;_Delegate#39;中搜索#39;_Delegate#39;)
本文介绍了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'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)