gpt4 book ai didi

javascript - Firebase Firestore db.collection 不是函数

转载 作者:行者123 更新时间:2023-12-05 05:56:01 29 4
gpt4 key购买 nike

我正在开发轮类调度程序,并使用 firebase 身份验证和 firestore。我的想法是,当用户注册时,它会在“workers”集合中创建一个文档,并将文档 ID 设置为用户的电子邮件。当用户添加类次时,我想将类次信息添加到该用户文档内的子集合“类次”中,其中将存储所有类次。我已经阅读并看过许多指南,但我无法正确理解语法/逻辑,并且由于语法的 firebase 更改,我包含了我使用的大部分设置。

firebase.js:

import { getAuth } from "firebase/auth";
import "firebase/firestore";
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore"
require('firebase/auth');

const firebaseConfig = {
...
};
const app = initializeApp(firebaseConfig);

export const db = getFirestore(app);
export const auth = getAuth(app);
export default app

SignUp.js:

import { db } from "../firebase";
import { collection, addDoc, setDoc, doc } from "firebase/firestore";
import { useAuth } from '../contexts/AuthContext';
const { signup } = useAuth();

const handleSubmit = async (event) => {
event.preventDefault();
setError("");
try{
const data = new FormData(event.currentTarget);
await signup ( data.get('email'), data.get('password'));
const docRef = await setDoc(doc(db, "workers", data.get('email')), {
firstName: data.get('firstName'),
lastName: data.get('lastName'),
email: data.get('email'),
numberOfShifts: 0
});
}
catch(e){
console.error("Error adding document: ", e);
setError("Failed to create an account");
};

注册效果很好,文档 ID 是电子邮件。错误是当我尝试向该文档添加类次时(在此阶段未创建集合类次)

Datasheed.js:(用户输入类次的地方)

import { auth } from "../firebase"
import { db } from "../firebase";

const commitChanges = async ({ added, changed, deleted }) => {
if (added) {
try {
db.collection("workers")
.doc(auth.currentUser.email)
.collection("shifts")
.add(added);
} catch (e) {
console.error("Error adding document: ", e);
}
}

现在我只是想添加,我得到的捕获异常是:添加文档时出错:TypeError:firebase__WEBPACK_IMPORTED_MODULE_5_.db.collection 不是函数。从我读到的问题是我使用 firebase modular 并且它不再有 db.collection 并且它使用集合引用。我还需要子集合的集合引用吗?我需要做哪些更改才能实现这一点?

最佳答案

您在 signup.js 中使用模块化 SDK 和模块化语法。您应该在其他地方使用相同的语法。尝试像这样重构:

const commitChanges = async ({ added, changed, deleted }) => {
if (added) {
try {
await addDoc(collection(db, "workers", auth.currentUser.email, "shifts"), added)
} catch (e) {
console.error("Error adding document: ", e);
}
}
}

您可以在 documentation 中了解有关新语法的更多信息.

关于javascript - Firebase Firestore db.collection 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69313691/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com