首页 > 解决方案 > 执行两个创建函数云函数

问题描述

我正在为用户注册时创建一个云功能,首先从他们创建一个分数集合,但随后我还想向他们的帐户添加一些虚拟启动数据,但以下内容不起作用,因为第二个返回语句是从未达到。

如果对完全做到这一点的更好方法有任何建议,那么我欢迎您提供反馈。

  // auth trigger (new user signup)
  exports.newUserSignup = functions.auth.user().onCreate((user) => {

      return admin.firestore().collection('users').doc(user.uid).collection('score').add({
          gems: 0,
      })

      //this line isn't reached

      return admin.firestore().collection('users').doc(user.uid).collection('sampleData').add({
          ...
      });

  })

标签: javascriptgoogle-cloud-functions

解决方案


您需要等到两个操作的承诺得到解决。一种方法是生成一个新的 Promise,该 Promise 仅在其他两个解决后才解决。

exports.newUserSignup = functions.auth.user().onCreate((user) => {

    const p1 = admin.firestore().collection('users').doc(user.uid).collection('score').add({
        gems: 0,
    })
    
    const p2 = admin.firestore().collection('users').doc(user.uid).collection('sampleData').add({
        ...
    });

    return Promise.all([p1, p2]);
})

为了有效地使用 JavaScript 和 Cloud Functions,您肯定需要了解使用 JavaScript Promise 进行异步编程的工作原理。我建议花一些时间来了解这一点。


推荐阅读