Я внедряю модуль оплаты Stripe в веб-приложении Firebase.
Я создаю заряд Stripe через Cloud Function, как показано ниже:
exports.createStripeCharge = functions.database.ref('...').onWrite(event => {
....
let chargeStatus;
return stripe.charges.create(charge, {idempotency_key})
.then(returnedcharge => {
chargeStatus = returnedcharge.status;
return event.data.adminRef.set(returnedcharge)
})
.then(() => {
return admin.database().ref('/stripeCardCharges/${event.params.orderId}').set({'status': chargeStatus});
})
.catch(error => {
...
})
Как вы видите, я стараюсь следовать советам команды Firebase, чтобы тщательно объединить обещания.
Однако мне нужен объект returnedcharge
который будет использоваться в двух обещаниях, прикованных один за другим:
returnedcharge.status
в базу данных, но на другом узле (из-за разных прав доступа)Затем я создал переменную, которую я заполняю в первом обещании и использую позже в следующем.
Мой вопрос: это хороший подход?
Другой связанный вопрос (для которого я думаю, что ответ "нет"!): Было бы возможно (и иметь смысл!) Объединить две записи базы данных (т.е. установить) только в одном обещании? Если да, то что вы тогда возвращаете?
Похоже на меня. Кажется, что работа выполнена без проблем.