【问题标题】:How to create sub-collections using Firebase Transactions?如何使用 Firebase 事务创建子集合?
【发布时间】:2020-07-07 14:33:50
【问题描述】:

创建我的用户后,我运行 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 }
    );
  }
});

我应该如何添加子集合以获得类似上面的路径?

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    创建子集合不需要特殊代码。集合和子集合在添加第一个文档时自动创建,并在删除最后一个文档时删除。事务和普通写入都是一样的。

    这意味着您实际上需要在您的事务中编写一个文档才能显示子集合。您可以像现在使用transaction.set() 一样做到这一点。您所要做的就是像您的ref 一样构建对文档的引用,并提供数据。

    const ref2 = admin.firestore()
        .collection("collection1").
        .doc(event.uid)
        .collection("your-subcollection")
        .doc("your-document);
    transaction.set(ref2, { your: data });
    

    如您所见,这与您现在所做的确实没有什么不同。

    【讨论】:

    • 很好,很简单。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-02-22
    • 2020-11-24
    • 2020-09-28
    • 2020-04-07
    • 2020-09-17
    • 2021-02-20
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多