如何在 loopback-next 中 res.send 一些东西

How to res.send something in loopback-next

我有一个具有回调的函数,如下所示,我想 return 帐户在回调中 return 作为对函数请求的响应。我怎么能 res.send 帐户(因为我不能 return 来自回调函数的值)

@get('/payments/retrieve-stripe/{id}', {
    responses: {
      '200': {
        description: 'User model instance',
        content: {'application/json': {schema: {'x-ts-type': User}}},
      },
    },
  })
  async retrieveStripe(@param.path.number('id') id: number,
  @requestBody() req: any): Promise<any> {
    if (!req.stripeAccountId) {
      throw new HttpErrors.NotFound('No Stripe Account');
    }
    else {
    stripe.accounts.retrieve(
  req.stripeAccountId,
  async function(err: any, account: any) {
    //console.log(err)
   console.log(account)
    return account
  })
    }
  }

如果您在代码中的任何一点都无法使用回调,您将使用手动承诺(或者可能是一些承诺包装库)。

不要使用 asyncreturn,而是使用 resolve(),它在功能上可以 return 从您的函数的任何位置开始,而不管范围如何。

@get('/payments/retrieve-stripe/{id}', {
    responses: {
      '200': {
        description: 'User model instance',
        content: {'application/json': {schema: {'x-ts-type': User}}},
      },
    },
  })
  retrieveStripe(@param.path.number('id') id: number, @requestBody() req: any): Promise<any> {
    return new Promise((resolve, reject) => {
      if (!req.stripeAccountId) {
        throw new HttpErrors.NotFound('No Stripe Account');
      }
      else {
        stripe.accounts.retrieve(req.stripeAccountId, function(err: any, account: any) {
          resolve(account);
        })
      }
    });
  }