【问题标题】:Add document to sub-collection of an empty document with a randomly generated id in firestore将文档添加到 Firestore 中具有随机生成的 id 的空文档的子集合
【发布时间】:2021-03-21 18:31:10
【问题描述】:
我正在尝试使用随机生成的 uid 在 Firestore 中创建一个空的新“Book”文档。同时,我想将数据添加到 book 文档中名为“Pages”的子集合中的“Page”文档中。我无法完成这项工作,是否需要在写入子集合之前显式引用 docId?
export const addBookAndFirstPage = () => {
const pageRef = db.collection("books").doc().collection("pages").doc("page1");
return pageRef.set({ foo: "bar" });
};
【问题讨论】:
标签:
javascript
google-cloud-firestore
【解决方案1】:
我已经解决了这个问题,方法是分别创建对每个文档的两个引用,但也按照 docs 使用 add() 而不是 doc()。请注意,add() 需要将对象作为参数,否则会引发以下异常:
FirebaseError:使用无效数据调用函数 addDoc()。数据必须
是一个对象,但它是:未定义
要使用随机生成的 uid 创建一个空文档,我们需要将一个空对象传递给add 方法,如下所示。然后,我们可以为要添加到子集合的文档创建引用并设置数据:
export const addBookAndFirstPage = async () => {
try {
let bookRef = await db.collection("books").add({}); // <--- Use add() with an empty object
let pageRef = await caseRef.collection("pages").doc("page1");
return await pageRef.set({ foo: "bar" });
} catch (error) {
console.log(error);
}
};