我有一个有角度的应用程序,它使用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
}
);
});
});
答案 0 :(得分:0)
看起来您没有payment
或payment.charge
。
if (!payment || payment.charge) return;
答案 1 :(得分:0)
我通过执行以下操作解决了此警告:
if (!payment || payment.charge) return null;
上面的行检查付款是否存在或已被收取