在 firebase 函数错误中获取新创建的文档 ID

Get newly created document ID in firebase functions error

我正在尝试获取新创建的 firestore 文档 ID 并在同一个云函数中使用它,但是我遇到了一些错误!

这是我的云函数:

exports.createNewGroup = functions.https.onCall((data, context) => {

    if (!context.auth) {
        throw new functions.HttpsError(
            'unauthenticated',
            'only autehnticated users can make requests!'
        );
    }

    // Save a new group document and get the documents ID
    const { id } = admin.firestore().collection('groups').set(data.group);

    // Adding the group id to the groupmember object 
    data.groupMember.groupId = id;

    // Save a new groupmember document with the newly created groupid added
    admin.firestore().collection('groupMembers').set(data.groupMember);

    return 'All is created perfectly';
});

调用函数时,函数日志中出现此错误:

createNewGroup
Unhandled error TypeError: admin.firestore(...).collection(...).set is not a function

不确定我做错了什么,以及如何完成这个?!?!希望得到帮助并提前致谢:-)

set() 方法存在于 DocumentReference but you are calling it on a CollectionReference 上。如果您尝试添加具有随机 ID 的文档,请改用 add() 方法。 add()set() return 也是一个承诺,所以确保你处理它们:

exports.createNewGroup = functions.https.onCall(async (data, context) => {
  // Async function                             ^^^^^
  if (!context.auth) {
    throw new functions.HttpsError(
      'unauthenticated',
      'only autehnticated users can make requests!'
    );
  }

  const { id } = await admin.firestore().collection('groups').add(data.group);
  // await it    ^^^^^

  // Adding the group id to the groupmember object 
  data.groupMember.groupId = id;

  await admin.firestore().collection('groupMembers').add(data.groupMember);

  return 'All is created perfectly';
});

请注意 .doc().set() 也可以用来代替 .add()。两种方法是等价的。