在Firebase的云函数中传递链接的Promise之间的值

时间:2018-01-19 18:19:54

标签: javascript firebase promise google-cloud-functions

我正在Firebase网络应用程序中实施Stripe付款模块。

我通过云功能创建Stripe充电,如下所示:

exports.createStripeCharge = functions.database.ref('...').onWrite(event => {
....
    let chargeStatus;

return stripe.charges.create(charge, {idempotency_key})
    .then(returnedcharge => {
        chargeStatus = returnedcharge.status;
        return event.data.adminRef.set(returnedcharge)
    })
    .then(() => {
        return admin.database().ref(`/stripeCardCharges/${event.params.orderId}`).set({'status': chargeStatus});
    })
    .catch(error => {
        ...
    })

如您所见,我尝试按照Firebase小组的建议仔细链接承诺。

但是我需要在两个承诺中使用returnedcharge对象,一个接一个地链接:

  1. 第一次将整个对象写入实时数据库
  2. 第二次,因为我想将returnedcharge.status写入数据库,但是在另一个节点(因为访问权限不同)
  3. 然后我创建了一个变量,我在第一个承诺中填充,然后在下一个承诺中使用。

    我的问题是:这是一个好方法吗?

    另一个相关的问题(我认为答案是“不”!):是否有可能(并且有意义!)将两个数据库写入(即设置)合并在一个承诺中?如果是的话,那你又回来了什么?

1 个答案:

答案 0 :(得分:1)

对我来说还不错。似乎没有问题就完成了工作。