Firebase功能承诺链未捕获错误

时间:2018-07-23 13:11:17

标签: javascript firebase google-cloud-functions

我正在使用Firebase函数,该函数检测将条带标记添加到用户集合的时间,然后创建一个条带用户并为该用户创建订阅。

我遇到的问题是以下代码中有错误,尽管我需要弄清楚该错误是什么,但是Promise Chain似乎并没有捕获到实际错误。 全部注销的是Function execution took 4375 ms, finished with status: 'connection error'

有人知道为什么会这样吗?记录错误的唯一方法是嵌套Promises。

exports.createStripeUser = functions.firestore
  // A Stripe Token is created in a user, therefore they have agreed to pay
  // Create a User in Stripe, and then attach the subscription to the Stripe customer
  .document('users/{userId}/stripe/{stripeCollectionId}')
  .onCreate((snap, context) => {
    const stripeToken = snap.data().stripeToken;
    let customer;
    return admin.auth().getUser(`${context.params.userId}`)
    .then(userObj => {
      const user = userObj.toJSON();
      return stripe.customers.create({
        email: user.email,
        source: stripeToken
      })
    })
    .then(cust => {
      customer = cust;
      return db.collection('users').doc(context.params.userId).collection('plan').doc(context.params.userId).get()
    })
    .then(plan => {
      return stripe.subscriptions.create({
        customer: customer.id,
        items: [{plan: plan.data().plan}]
      })
    })
    .catch(e => {
      console.log("ERRR", e)
      throw new functions.https.HttpsError('unknown', e.message, e);
    })
  })

1 个答案:

答案 0 :(得分:0)

将您的方块包裹在

try {

} 
catch (e) { 
// e holds the nested error message 
} 

阻止并在那里获取错误。