Функция вернула неопределенное, ожидаемое обещание или значение - NodeJS - PullRequest
0 голосов
/ 20 октября 2018

У меня есть угловое приложение, которое использует Firestore в качестве базы данных и облачных функций Google для обработки бэкэнда.Когда я запускаю свое приложение и нажимаю на оплату, чтобы выполнить вызов Stripe API , в журнале появляется следующее сообщение для облачных функций.

Функция вернула неопределенный, ожидаемыйОбещание или значение

Я читал несколько вопросов о стековом потоке, и они говорят о том, что я возвращаю что-либо в Обещании .then(), но я продолжаю получать ту же ошибку.Хорошо, что фактическое значение хранится в Firestore без проблем, так что это больше похоже на предупреждение, чем на ошибку, так как ничего не ломается.

Чего мне не хватает?

exports.stripeCharges = functions.firestore
  .document("/payments/users/TAMO/{paymentId}")
  .onWrite((event, context) => {
    const payment = event.after.data();
    const paymentId = context.params.paymentId;
    if (!payment || payment.charge) return;

    return admin
      .firestore()
      .doc(`/payments/users/TAMO/${paymentId}`)
      .get()
      .then(snapshot => {
        return snapshot.data();
      })
      .then(customer => {
        const amount = payment.amount * 100;
        const idempotency_key = paymentId;
        const source = payment.token.id;
        const currency = "usd";
        const description = "Test Charge";

        const charges = {
          amount,
          currency,
          description,
          source
        };

        return stripe.charges.create(charges, { idempotency_key });
      })
      .then(charges => {
        return admin
          .firestore()
          .doc(`/payments/users/TAMO/${paymentId}`)
          .set(
            {
              charge: charges
            },
            {
              merge: true
            }
          );
      });
  });

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Я решил это предупреждение, выполнив следующее:

if (!payment || payment.charge) return null;

В строке выше проверяется, существует ли платеж или уже был снят

0 голосов
/ 20 октября 2018

Похоже, у вас нет payment или payment.charge.

if (!payment || payment.charge) return;
...