为什么我会收到"TypeError: doc is not a function"(Firebase 9、Firestore)



我尝试在Firestore中添加一个自定义ID的用户。

import { db } from "../firebase/config";
import {collection, addDoc, deleteDoc, updateDoc, doc, setDoc} from 'firebase/firestore'

export const useFirestore = (collections) => {
const addDocumentUser = async (doc, id) => {
try{
const addedDocument = await setDoc(doc(db, collections, id), {...doc});
return addedDocument.id

}
catch(err){
console.log(err)
dispatch({type: 'ERROR', payload: err})
}
}

return {addDocumentUser}
}

当我运行它时,在控制台收到以下错误:

TypeError: doc is not a function
at addDocumentUser (useFirestore.js:62:1)
at useSignup.js:29:1
at async signup (useSignup.js:23:1)
at async handleSubmit (Signup.js:23:1)

我做错了什么?我导入了所有内容,数据库访问功能(addDoc)没有自定义id。

问题是您正在重新定义doc,因此它有两个定义:

import { db } from "../firebase/config";
import {collection, addDoc, deleteDoc, updateDoc, doc, setDoc} from 'firebase/firestore'
// 👆

export const useFirestore = (collections) => {
const addDocumentUser = async (doc, id) => {
// 👆
try{
const addedDocument = await setDoc(doc(db, collections, id), {...doc});
...

我指出的第二个doc隐藏了您之前导入的函数。

解决方案是使用不同的名称:

import { db } from "../firebase/config";
import {collection, addDoc, deleteDoc, updateDoc, doc, setDoc} from 'firebase/firestore'

export const useFirestore = (collections) => {
const addDocumentUser = async (data, id) => {
// 👆
try{
const addedDocument = await setDoc(doc(db, collections, id), {...data});
     // 👆
...

相关内容

最新更新