【发布时间】:2019-11-12 16:27:04
【问题描述】:
我是 JavaScript 新手,我在各种资源的帮助下编写了以下 JS Google Cloud Function。
此函数处理 Stripe invoice.payment_succeeded 事件,而不是写入整个 data,我试图将发送的 period_start 和 period_end 值都保存回我的 Firebase DB 中的正确位置(参见结构下面)。
如何在同一个函数调用中写入这两个值?
exports.reocurringPaymentWebhook = functions.https.onRequest((req, res) => {
const hook = req.body.type;
const data = req.body.data.object;
const status = req.body.data.object.status;
const customer = req.body.data.object.customer;
const period_start = req.body.data.object.period_start;
const period_end = req.body.data.object.period_end;
console.log('customer', customer);
console.log('hook:', hook);
console.log('status', status);
console.log('data:', data);
console.log('period_start:', period_start);
console.log('period_end:', period_end);
return admin.database().ref(`/stripe_ids/${customer}`).once('value').then(snapshot => snapshot.val()).then((userId) => {
const ref = admin.database().ref(`/stripe_customers/${userId}/subscription/response`)
return ref.set(data);
})
.then(() => res.status(200).send(`(200 OK) - successfully handled ${hook}`))
.catch((error) => {
// We want to capture errors and render them in a user-friendly way, while
// still logging an exception with StackDriver
return snap.ref.child('error').set(userFacingMessage(error));
})
.then((error) => {
return reportError(error, {user: context.params.userId});
});
});//End
【问题讨论】:
标签: javascript firebase firebase-realtime-database google-cloud-functions stripe-payments