【发布时间】:2022-11-10 22:26:57
【问题描述】:
我想知道,为什么我可以将数据写入 Firestore添加文档并且无法用onSnapshot() 阅读
// CheckoutForm.js
import { addDoc, setDoc, doc, onSnapshot, collection, getDoc } from "firebase/firestore";
import { firestore } from "../../firebase";
import { getStripe } from "./initializeStripe";
export async function createCheckoutSession(uid) {
// Create a new checkout session in the subollection inside this users document
await addDoc(collection(firestore, "users", `${uid}`, "checkout_sessions"), {
price: "price_1M0jbXFlIMqx6x27XApjUcnp",
success_url: window.location.origin,
cancel_url: window.location.origin,
})
// Wait for the CheckoutSession to get attached by the extension
onSnapshot(doc(firestore, "users", `${uid}`, "checkout_sessions"), (doc) => {
console.log("Current data: ", doc.data());
const { sessionId } = doc.data();
if (sessionId) {
const stripe = await getStripe();
stripe.redirectToCheckout({ sessionId });
}
});
}
所以这给我一个错误:
未处理的承诺拒绝:FirebaseError:无效的文档参考。文档引用必须有偶数个段,但 users/XQRo8Mn0k7awkxCYPTQ7IeWHID93/checkout_sessions 有 3
在我得到一些相同的东西之前,当尝试使用
setDoc写入数据时,我仍然不明白为什么我不能这样做,现在onSnapshot()也是如此,需要一些确切数量的路径。 当我使用addDoc写入数据时,该数据会提供给文档随机ID,因此我无法进入。我会很高兴得到帮助!
马克西姆
【问题讨论】:
标签: javascript reactjs firebase google-cloud-firestore