javascript - 如何将回调数据传递给 koa ctx.body?

标签 javascript node.js koa ctx

我正在使用带有 nodejs 的 Typescript。我有 callback function当我控制台时,我将数据作为正文中的对象。我想在 ctx.body 的数据键中传递数据.我可以推一下吗object在其他 variable然后传递给 ctx.body ?

router.post('/api/send_otp', async (ctx: Koa.Context, next: () => Promise<any>) => {
        var phone = ctx.request.body.phone;

        if (!phone) {
            ctx.body = {
                message: "Please enter phone number",
            };
        } else {

    var options = {
        url: '',
        method: 'POST',
        auth: {
            'user': '',
            'pass': ''
        },
    };

    const callback = function(error, response, body) {
        if (response) {
            console.log(body); // Getting data here
        }else{
            console.log('error',error);
        }
    };

    request(options,callback);

    ctx.body = {
        data: body,   //I want data here
    }
});

最佳答案

您可以将您的回调样式转换为 promise 并这样做

const options = {
  "url": "",
  "method": "POST",
  "auth": {
    "user": "",
    "pass": ""
  }
};

function makeCall() {
  return Promise((resolve, reject) => {
    request(options, (error, response, body) => {
      if (response) {
        resolve(body);
      } else {
        reject(error);
      }
    });
  });
}

makeCall
  .then(body => {
    ctx.body = {
      "data": body   // I want data here
    };
  });



请注意,不再维护请求,因此最好使用一些现代软件包,例如 gotaxios .

关于javascript - 如何将回调数据传递给 koa ctx.body?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810407/

相关文章:

javascript - 清除特定域的缓存

javascript - 如何在angular js中设置最大值和最小值?

javascript - 在 Nest.js 中定义 Node 环境

node.js - 什么是 koa :sess. 信号?

javascript - 当使用 PUT 方法主体时,不使用 Koa 传递

node.js - 如何使用 async/await 和 Promise 响应?

javascript - 在为 Atom 开发包时,如何写入包文件夹内的 JSON 文件?

javascript - 尝试通过 jQuery getJSON jsonp 读取远程 URL,但它不起作用

node.js - Mongoose findByIdAndUpdate 销毁丢失的字段

javascript - Eslint 报告依赖项配置的 eslintrc 配置问题