JavaScript谷歌云函数: write Stripe values to Firebase

标签 javascript firebase firebase-realtime-database google-cloud-functions stripe-payments

我是 JavaScript 新手,我在各种资源的帮助下编写了以下 JS Google Cloud 函数。

此函数处理 Stripe invoice. payment_succeeded 事件,而不是写入整个 数据 我试图仅保存发送的 period_startperiod_end 值返回到我的 Firebase 数据库中的正确位置(请参阅下面的结构)。

如何在同一个函数调用中写入这两个值?

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

enter image description here

最佳答案

HTTP 类型函数在发送响应后立即终止。在您的代码中,您将发送响应,然后尝试在此之后执行更多工作。您必须在发送响应之前完成所有工作,否则响应可能会被中断。

关于JavaScript谷歌云函数: write Stripe values to Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845415/

相关文章:

Firebase 同时实时连接到我的数据库

java - 来自 Firebase 的纬度和经度坐标不正确,并且所有帖子的纬度和经度坐标均相同

java - 将来自 Api 响应的数据添加到 Android 中的 Firebase 数据库中

javascript - 我的 JavaScript for 循环 if/else 语句有什么问题?

javascript - jQuery 在 Chrome 和 IE 中对数组输出进行不需要的排序(FF 工作正常)

javascript - jquery 在滚动上工作

javascript - 如何从浏览器中读取客户端的机器名?

javascript - 文件上传到 Firebase 存储无法正常工作 ("storage/invalid-argument")

android - 如何在用户离线时发送图像,就像使用 firebase 的聊天应用程序中的短信一样?

ios - 使用当前时间戳查询该时间之前的所有帖子