【问题标题】:Passing a value between chained Promises in Cloud Functions for Firebase在 Cloud Functions for Firebase 中的链式 Promise 之间传递值
【发布时间】:2018-06-29 01:26:42
【问题描述】:

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

我通过 Cloud Function 创建 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 团队的建议,谨慎地链接承诺。

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

  1. 第一次将整个对象写入实时数据库
  2. 第二次因为想写returnedcharge.status到数据库,但是在另一个节点(因为访问权限不同)

然后我创建了一个变量,我在第一个 Promise 中填充并稍后在下一个 Promise 中使用。

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

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

【问题讨论】:

  • 谢谢!我对如何在 promise 中获取参数感到头疼,它只是函数中的局部变量——它起作用了!

标签: javascript firebase promise google-cloud-functions


【解决方案1】:

我觉得不错。似乎可以毫无问题地完成工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-23
    • 2017-09-07
    • 2018-01-03
    • 2022-12-01
    • 2021-10-03
    • 2017-08-02
    • 1970-01-01
    • 2018-12-03
    相关资源
    最近更新 更多