函数返回了未定义的,预期的Promise或值-NodeJS

时间:2018-10-20 03:24:06

标签: node.js angular google-cloud-functions es6-promise

我有一个有角度的应用程序,它使用firestore作为数据库和Google云功能来处理后端。当我运行我的应用程序并单击“付费”以调用 Stripe API 时,我会在日志中收到有关云功能的以下消息。

  

函数返回了未定义的预期承诺或值

我一直在阅读几个stackoverflow问题,他们谈论我在Promise .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 :(得分:0)

看起来您没有paymentpayment.charge

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

答案 1 :(得分:0)

我通过执行以下操作解决了此警告:

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

上面的行检查付款是否存在或已被收取