Передача значения между связанными обещаниями в облачных функциях для Firebase

1

Я внедряю модуль оплаты 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 который будет использоваться в двух обещаниях, прикованных один за другим:

  1. В первый раз, чтобы написать весь объект в базу данных реального времени
  2. Второй раз, потому что я хочу написать returnedcharge.status в базу данных, но на другом узле (из-за разных прав доступа)

Затем я создал переменную, которую я заполняю в первом обещании и использую позже в следующем.

Мой вопрос: это хороший подход?

Другой связанный вопрос (для которого я думаю, что ответ "нет"!): Было бы возможно (и иметь смысл!) Объединить две записи базы данных (т.е. установить) только в одном обещании? Если да, то что вы тогда возвращаете?

Теги:
firebase
google-cloud-functions
promise

1 ответ

1
Лучший ответ

Похоже на меня. Кажется, что работа выполнена без проблем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню