我在Nextjs(js)和Firebase上创建了一个应用程序.我增加了Stripe个扩展来创建订阅系统.我对firebase的新版本9不是很有经验,所以很难做到这一点,因为我遵循了一个使用版本8和ts的教程.我仍然设法使大多数事情都能正常工作,除了这个错误.

这是教程:https://youtu.be/P0Udy2Gi7n8?t=859(我14:19的问题)

I'm having the error here:

import getStripe from "./initializeStripe";
import { db } from '../firebase/firebaseClient'
import { doc, getDoc, addDoc, setDoc, setCol, onSnapshot, collection } from "firebase/firestore";

export async function createCheckoutSession(uid) {

    const docData = {
        price: "price_1KvNgoI6qyGEmrlgKU3miVmT",
        success_url: window.location.origin,
        cancel_url: window.location.origin,
    };
  
    const checkoutSessionRef = await setDoc(collection(db, "users", uid, "checkout_sessions"), docData); //ERROR


    onSnapshot(getDoc(doc(checkoutSessionRef)), (snap) => {
        const { sessionId } = snap.data();

        if (sessionId) {
            // We have a session, let's redirect to checkout
            // Init Stripe
            const stripe = getStripe();
            stripe.redirectToCheckout({ sessionId })
        }
    });

错误如下:

Unhandled Runtime Error

Browser

Firebase config

推荐答案

setDoc()DocumentReference作为第一个参数,但您正在传递CollectionReference.试着用addDoc()代替:

await addDoc(collection(db, "users", uid, "checkout_sessions"), {...data})

这将添加一个带有随机生成的文档ID的文档.如果要使用"自己指定文档",则可以使用setDoc(),如下所示:

await setDoc(doc(db, "users", uid, "checkout_sessions", "DOC_ID"), {...data})

Javascript相关问答推荐

没有输出到带有chrome.Devtools扩展的控制台

Bootstrap动态选项卡在切换选项卡后保持活动状态,导致元素堆叠

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

如何调用名称在字符串中的实例方法?

在HTML语言中调用外部JavaScript文件中的函数

正则表达式,允许我匹配除已定义的子字符串之外的所有内容

Rxjs流中生成IMMER不能在对象上操作

OnClick更改Json数组JSX中的图像源

背景动画让网站摇摇欲坠

顶点图使用组标签更新列之间的条宽

使用API调用的VUE 3键盘输入同步问题

如何使用[ModelJSON,ArrayBuffer]调用tf.loadGraphModelSync

ReferenceError:无法在初始化之前访问setData

AstroJS混合模式服务器终结点返回404

使用Java脚本在div中创建新的span标记

不允许在对象文本中注释掉的属性

使用Java脚本筛选数组中最接近值最小的所有项

元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但GET:Object.在Reaction项目中

如何在chartjs-plugin-data Labels v2.1.0插件中设置照片?