Node.js 如何处理异步可调用云函数的Json响应

Node.js 如何处理异步可调用云函数的Json响应,node.js,flutter,google-cloud-functions,stripe-payments,Node.js,Flutter,Google Cloud Functions,Stripe Payments,我有以下函数,试图获取由stripeapi创建的url链接 它应该返回以下对象 { "object": "login_link", "created": 1620954357, "url": "https://connect.stripe.com/express/VGAOul448UhS", "id": "lael_JTn3grKOB073gL&quo

我有以下函数,试图获取由stripeapi创建的url链接 它应该返回以下对象

{
  "object": "login_link",
  "created": 1620954357,
  "url": "https://connect.stripe.com/express/VGAOul448UhS",
  "id": "lael_JTn3grKOB073gL"
}
Nodejs可调用函数(在Dart/FLATTER中调用)

从颤振中召唤,如下

  Future<void> getUrl() async {
    HttpsCallable callable = FirebaseFunctions.instance.httpsCallable('loginLink');
    dynamic results = await callable.call(<String, dynamic>{
    'id': 'acct_1IpttSQgX5lyYgEb',});
    print (results.data);
    String urlLink = results.data;
  }
Future getUrl()异步{
HttpScalable callable=FirebaseFunctions.instance.HttpScalable('loginLink');
动态结果=wait callable.call({
‘id’:‘acct_1iptsqgx5lyygeb’,});
打印(结果、数据);
字符串urlink=results.data;
}
Firebase日志返回未处理的错误引用错误:无法在初始化之前访问“loginLink” at/workspace/index.js:41:15


获取stripe提供的url有什么帮助吗?

请尝试以下代码作为可调用函数:

exports.loginLink=functions.https.onCall(异步(数据、上下文)=>{
const accountId=data.id;
log('这是accountId-->'+accountId);
const loginLink=wait stripe.accounts.createLoginLink(accountId);
返回登录链接;
})

您的原始代码混合了
async/await
.then()
,这并不理想。原始的
return
语句仅从
then()
块返回,而不是从顶级函数返回,因此最终实际上没有返回任何内容。

请尝试将此代码用于可调用函数:

exports.loginLink=functions.https.onCall(异步(数据、上下文)=>{
const accountId=data.id;
log('这是accountId-->'+accountId);
const loginLink=wait stripe.accounts.createLoginLink(accountId);
返回登录链接;
})

您的原始代码混合了
async/await
.then()
,这并不理想。您原来的
return
语句只从
then()
块返回,而不是从顶级函数返回,因此最终没有返回任何内容。

是的,以前尝试过,日志返回loginLink:Unhandled error ReferenceError:loginLink未在/workspace/index.js:37:3的func中定义在ProcessTicks和Rejections(internal/process/task_queues.js:97:5)中的(/workspace/node_modules/firebase functions/lib/providers/https.js:273:32)2021-05-17T21:51:48.947010099Z D loginLink:函数执行耗时423毫秒,完成状态代码:500这不是我所期望的错误;
loginLink
已定义…您能否共享导致该错误的确切代码并注意哪一行是第37行?很好,在我这方面,它可以工作它将loginLink作为对象返回。我只需要如果您
print(结果),请理解如何在我的dart Flatter future函数中检索它(我认为类似snap.data['url'])
你得到了什么?这是否给了你一个关于
url
在哪里的提示?它工作得很好,我认为我需要解析一个Json对象,但它返回了一个映射,对于其他用户,你只使用结果来处理“HttpScalableResult”对象。数据['url'].Tks对于之前尝试过的帮助,日志返回loginLink:Unhandled error ReferenceError:loginLink未在/workspace/index.js:37:3 at func(/workspace/node_modules/firebase functions/lib/providers/https.js:273:32)的processtick和拒绝(internal/process/task_queues.js:97:5)2021-05-17T21:51:48.947010099Z D loginLink:函数执行耗时423毫秒,完成状态代码:500这不是我所期望的错误;
loginLink
已定义…您能否共享导致该错误的确切代码并注意哪一行是第37行?很好,在我这方面,它可以工作它将loginLink作为对象返回。我只需要如果您
print(结果),请理解如何在我的dart Flatter future函数中检索它(我认为类似snap.data['url'])
你得到了什么?这是否给了你一个关于
url
在哪里的提示?它工作得很好,我认为我需要解析一个Json对象,但它返回了一个映射,对于其他用户,你只需使用results.data['url']来处理'HttpScalableResult'对象。Tks寻求帮助
  Future<void> getUrl() async {
    HttpsCallable callable = FirebaseFunctions.instance.httpsCallable('loginLink');
    dynamic results = await callable.call(<String, dynamic>{
    'id': 'acct_1IpttSQgX5lyYgEb',});
    print (results.data);
    String urlLink = results.data;
  }