【问题标题】:Function returned undefined, expected Promise or value- NodeJS函数返回未定义、预期的 Promise 或值 - NodeJS
【发布时间】:2019-03-24 22:07:51
【问题描述】:

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

函数返回未定义的、预期的 Promise 或值

我一直在阅读几个 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
            }
          );
      });
  });

【问题讨论】:

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


    【解决方案1】:

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

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

    上面的行检查付款是否存在或是否已经收费

    【讨论】:

      【解决方案2】:

      您似乎没有paymentpayment.charge

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

      【讨论】:

      • 是的,这就是我想要的。该行检查付款是否存在或是否已经收费。 payment.charge 是undefined,因为还没有收费
      • 可能是您没有付款或收费的情况,这就是您获得未定义价值的原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 2019-08-06
      • 2019-11-18
      • 2018-06-12
      • 2018-08-05
      • 1970-01-01
      相关资源
      最近更新 更多