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.