首页 > 解决方案 > 不从自定义助手返回值

问题描述

我的 node.js 助手有问题。我的助手向 payu API 发送 post 请求,API 返回我需要的 access_token。如果收到 access_token,那么我需要归还他。

我的代码:

module.exports = {
    createPaymentToken: async () => {
        const response =  await request({
                method: 'POST',
                json: false,
                url: payuAuthUrl,
                form: {
                    'grant_type': 'client_credentials',
                    'client_id': payuMerchantID,
                    'client_secret': payuSecret,
                }
            },
            function (error, response, body) {
              if (response) {
                const result = (JSON.parse(body));
                const token = result.access_token;
                return token;
             }
           }
        );
    },

当我在返回令牌之前添加 console.log(token) 时,我会看到我的 access_token。问题是当我想将此令牌传递给控制器​​时,即它到达我未定义。

我的控制器

  testPayment: async (req, res) => {
        var result = await payuHelper.createPaymentToken();
        res.send({
            result
        });
    },

我不知道我做错了什么。

标签: node.js

解决方案


您的 return 语句放置在回调中,因此该createPaymentToken函数不返回任何内容,只需修复您的代码,如下面的示例:

module.exports = {
    createPaymentToken: () => {
        return new Promise((resolve, reject) => {
            request({
                    method: 'POST',
                    json: false,
                    url: payuAuthUrl,
                    form: {
                        'grant_type': 'client_credentials',
                        'client_id': payuMerchantID,
                        'client_secret': payuSecret,
                    }
                },
                function (error, response, body) {
                  if (error) {
                    return reject(error)
                  }
                  if (response) {
                    const result = (JSON.parse(body));
                    const token = result.access_token;
                    return resolve(token);
                 }
               }
            );
        })
    },
}

承诺文件


推荐阅读