创建用户时,我将运行Transactions(functions.auth.user()。onCreate())在一些集合中创建少量文档。但是现在,此外,我需要创建这样的路径:
/ collection1 / {uid} / subcol1 / {id} / subcol2 /
“ collections”,“ subcol1”,“ subcol2”内部应有一个文档。我怎样才能做到这一点?首先,我不知道如何将子集合添加到创建的集合文档({uid})中。我有这样的东西:
const ref = admin.firestore().doc(`collection1/${event.uid}`);
return admin.firestore().runTransaction(async (transaction) => {
const snapshot = await transaction.get(ref);
if (!ref.exists) {
transaction.set(
snapshot,
{
fields: {
field1: 0,
field2: 0,
},
},
{ merge: true }
);
}
});
我应该如何添加子集合以使其具有上述路径?
创建子集合不需要任何特殊代码。将第一个文档添加到集合和子集合后,它们会自动创建,而当删除最后一个文档时,集合和子集合将被删除。交易和普通写入都是相同的。
这意味着您实际上需要在事务中编写文档才能使子集合出现。您可以像现在transaction.set()
那样进行操作。您要做的就是像ref
一样建立对文档的引用,并提供数据。
const ref2 = admin.firestore()
.collection("collection1").
.doc(event.uid)
.collection("your-subcollection")
.doc("your-document);
transaction.set(ref2, { your: data });
如您所见,它实际上与您现在所做的没什么不同。