angular - Angular 和 Firebase 云函数返回 null
问题描述
我正在研究支付系统。我使用云函数模拟 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,但我并不完全了解这些主题。谢谢!
解决方案
继续搜索后,我找到了这样的解决方案:
云功能:
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);
推荐阅读
- ios - “通过” UIView 背后的 UIViews 不可 VO 访问
- excel - 将调整大小和偏移范围的值分配给VBA中的变体时出现溢出错误
- json - MongoDB - 嵌套数组与 group_by 的总和
- java - MeterRegistry IllegalArgumentException
- r - 我应该使用什么 ML 算法来确定鱼的成熟年龄?
- python - Numpy:从 JSON 文件加载数据会给出带有嵌套列表的 np 数组
- javascript - Passport.js 本地策略 + bcrypt + 散列密码存储在 dotenv 环境变量中 - 这是一种安全的方法吗?
- sql-server - 如何在 Visual Studio 2019 中将表和数据导入 SQL Server 数据库项目
- amazon-web-services - 用于高读取 IO/s 的 Elasticache 设置
- python - 导入 pywinauto 包时 Python 已停止工作,即使我没有使用它