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 לחלוטין, ופשוט להחזיר את ההבטחה ישירות. לדוגמה: return db.doc(...).set(...), בלי להכריז על הפונקציה כ-async.