javascript - Firebase関数の非同期関数から何を返すべきか?
非同期関数の中で、関数が正しく完了するために await を返す必要がありますか、それとも以下のコードで問題ないですか?
const db = admin.firestore();
export const onUserCreate = functions.auth.user().onCreate(async event => {
try {
const user: User = {
userId: event.data.uid,
email: event.data.email
};
await db.doc(`users/${user.userId}`).set(user, {merge: true});
} catch (error) {
throw error;
}
});
回答 #1
この関数はすでに、あなたの db.doc(...).set(..) が解決された後にのみ解決するプロミスを返します。この場合、return await は冗長になります。
だから、あなたのコードはそのままで問題ないと思いますが、コードがシンプルすぎるため、async/await を使うのを完全に忘れて、単に Promise を直接返すという改善の可能性があります。例: return db.doc(...).set(...)、関数を async として宣言せずに。