首页 > 解决方案 > 如果我不想在后台函数中返回承诺,我该怎么办?

问题描述

通常我有这样的 Firestore 触发器

 exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate(async (snap, context) => {

       return db.doc("somePath").update({data:" "});
             
 });

但是现在例如我需要记录消息以指示更新过程成功,那么我应该返回什么?

exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate(async (snap, context) => {

       await db.doc("somePath").update({data:" "});
         
       console.log("successfully update data after document creation");

       return ????? // what should I return in here?
      
 });

因为根据这里 Youtube 的解释,后台函数(在我的例子中是 Firestore 触发器)应该返回一个承诺。

标签: node.jsfirebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


当你使用async函数时,你需要返回一个 Promise,所以你有两种选择:

选项 1:返回已解决的 Promise

exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate(async (snap, context) => {

       await db.doc("somePath").update({data:" "});

       console.log("successfully update data after document creation");

       return Promise.resolve();
      
 });

选项 2:最简单的解决方案async

exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate((snap, context) => {
       return db.doc("somePath").update({data:" "});
    });

推荐阅读