Angular 和 Firebase 云函数返回 null
Posted
技术标签:
【中文标题】Angular 和 Firebase 云函数返回 null【英文标题】:Angular and Firebase Cloud Functions return 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,但我并不完全了解这些主题。 谢谢!
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于Angular 和 Firebase 云函数返回 null的主要内容,如果未能解决你的问题,请参考以下文章