Firebase V9,向现有文档添加子集合

11
const q = getDoc(doc(db, "customers", user.uid));

你好,这里在控制台中返回一个Promise。 我有一个客户集合,每个用户的uid是该集合中的一个文档。我想为每个用户.uid文档创建一个子集合,以便我可以放置一个{带一些参数的}对象。但是如何为每个文档(user.uid)创建名为"checkout_sessions"的子集合呢?任何帮助将不胜感激,请谢谢。

这是Firebase v8中的操作方式。在撰写本文时,firestore没有名为checkout_sessions的集合,但这似乎会为每个user.uid创建一个子集合。

const docRef = await db
.collection("customers")
.doc(user.uid)
.collection("checkout_sessions").
add({
 price: priceId,
 and: two,
 more: pairs,
});

我需要在Firebase v9中创建与“checkout_sessions”相同的子集合,并向其添加数据,请谢谢!!!

1
Firestore没有创建集合和子集合的操作。您只需开始向它们编写文档,它们就会出现在控制台中。您是否实际上是在询问如何将文档写入子集合,而不管之前是否已经完成了这个操作? - Doug Stevenson
我的朋友,我有一个名为“customers”的集合,它将每个客户存储在一个文档(user.uid)下。现在对于每个文档(user.uid)-> 我需要创建一个名为“checkout_sessions”的子集合,并插入一些数据。这是最简单的事情,但我是新手,没有人可以问,也无法通过官方文档来帮助自己 :) 感谢您的帮助。我可以从教程中向您提供此代码,它只是几行代码。我不知道如何将其转换为新的v9结构。 - lifecycles
我正在更新我的帖子中的代码,添加了一个教程中的4行Firebase v8代码。 - lifecycles
2个回答

29

将代码重写为v9通常只需将方法调用更改为相应的函数调用,并将对象作为第一个参数传递。

在您的代码片段中,即:

const docRef = doc(db, "customers", user.uid);
const colRef = collection(docRef, "checkout_sessions")
addDoc(colRef, {
 price: priceId,
 and: two,
 more: pairs,
});

10

紧跟 Frank 的回答。如果您想使用 setDoc 方法来设置特定的 id -

const docRef = doc(db, "customers", user.uid, "checkout_sessions", "custom id");
setDoc(docRef, {
    price: priceId,
    and: two,
    more: pairs,
 });

对于任何在这里查看的人,请确保“自定义ID”是一个字符串。如果您不小心输入了一个数字,它将会抛出一个错误。这似乎很明显,但我调试了一段时间才发现。 - JBrown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接