【Firebase Functions】Databaseの固有IDを取得したい

以下の枠に囲われた固有IDを取得したい場合があります。
f:id:nekorokkekun:20191101100502p:plain

例えば、指定したIDのドキュメント直下に、さらにコレクションやドキュメントを作成する場合です。

その場合、以下のような書き方で固有IDを取得できます。

exports.addFanpageMember =
functions.firestore
.document("fanPages/{fanpageId}") // このように書く
.onCreate(async (snap, context) => {
  const val = snap.data();
  console.log(val);
  try {
  await admin
  .firestore()
  .collection("fanPages")
  .doc(context.params.fanpageId) // このように書く
  .collection("members")
  .doc(val.userId)
  .set({ permission: "pageOwner" });
  return;
} catch (error) {
  console.log(error);
  await snap.ref.set({ error: userFacingMessage(error) }, { merge: true });
  console.error(error);
  console.log(`user: ${context.params.userId}`);
}
});

重要なのは、以下2点です。

.document("fanPages/{fanpageId}") // このように書く
.onCreate(async (snap, context) => {
  .doc(context.params.fanpageId) // このように書く

ドキュメントを指定する際に「{fanpageId}」といった書き方をすることで、「context.params.fanpageId」と書いてアクセスが可能となります。