【问题标题】:Angular and Firebase Cloud Functions return nullAngular 和 Firebase 云函数返回 null
【发布时间】:2021-03-04 06:14:42
【问题描述】:

我正在开发一个支付系统。我使用云函数模拟 node.js。我从 Angular 向 Cloud Functions 发送请求。然后,我将第二个请求从云函数发送到支付 API。支付接口成功获取请求,支付成功。但是,我猜是因为异步结构,响应在 Angular 端显示为 null。

角度代码:

constructor(private fns: AngularFireFunctions) {
}
...

...
const callable = this.fns.httpsCallable('app');
var data = callable({req: request})
    
data.subscribe(async res => {
  console.log(res);
});

云功能:

exports.app = functions.https.onCall((data, context) => {
    var res = "";
    iyzipay.payment.create(data.req, function (err, result) {
        res = result;
    });
    return res;
});

如何等待回复?我尝试了 async/await,但我并不完全了解这些主题。 谢谢!

【问题讨论】:

    标签: angular google-cloud-functions


    【解决方案1】:

    继续搜索后,我找到了这样的解决方案:

    云功能:

    exports.app = functions.https.onCall((data, context) => {
        return new Promise((Resolve, Reject) => {
            iyzipay.payment.create(data.req, async function (err, result) {
                if (err) {
                    Reject({
                        id: 'Payment',
                        message: err
                    })
                }
                if (result && result.status == 'failure') {
                    Reject({
                        id: 'Payment Failed',
                        message: result.errorMessage
                    })
                }
                Resolve(result)
            });
        });
    });
    
    

    还有像 Akif 所说的棱角分明的一面:

        const callable = this.fns.httpsCallable('app');
        const res = await callable({ req: request }).toPromise();
        console.log(res);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 2019-08-20
      • 2021-12-24
      • 2014-05-12
      • 2020-06-03
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多