На самом деле, с последними версиями облачных функций вы не обязаны включать catch()
в цепочку обещаний.Платформа, на которой работает облачная функция, сама обработает ошибку.
Основано на этом посте О чем это может быть?[Ошибка TsLint: «Обещания должны обрабатываться надлежащим образом»] это, очевидно, ошибка, сгенерированная TsLint (EsLint?).
Однако, независимо от этой «ошибки», обнаруженной TsLint, я думаю, вы можетевозникают проблемы с вашей облачной функцией, потому что вы не возвращаете последнее обещание вашей цепочки:
return admin.firestore() //HERE YOU RETURN CORRECTLY
.doc(`/users/${userId}`)
.get()
.then(snapshot => {
return snapshot //HERE YOU RETURN CORRECTLY
})
.then(customer => {
const amount = payment.price * 100 // amount must be in cents
const idempotency_key = paymentId // prevent duplicate charges
const source = payment.token.id
const currency = 'usd'
const charge = {amount, currency, source}
return stripe.charges.create(charge, { idempotency_key }) //HERE YOU RETURN CORRECTLY
})
.then((charge) => {
return admin.firestore() //HERE, IN YOUR CODE, YOU DON'T RETURN
.collection('/payments').doc(userId).collection('mypayments').doc(paymentId)
.set({
charge: charge
}, { merge: true })
})
})