ウェブサイト検索

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 として宣言せずに。