node.js - 不从自定义助手返回值
问题描述
我的 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
});
},
我不知道我做错了什么。
解决方案
您的 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);
}
}
);
})
},
}
推荐阅读
- java - 如果未选择命令窗口,批处理文件将暂停
- apache-spark - 复制当前行,修改它并在火花中添加一个新行
- html - 如何仅将 HTML 表格中的某些元素居中?
- javascript - 使用键盘上的 Esc 键关闭模式弹出窗口
- javascript - 循环更改视频分辨率
- typescript - 计算函数中的类型不存在属性
- node.js - docker-compose:nodejs容器不与postgres容器通信
- python - 将 python 变量传递给 dash html 组件
- symfony4 - Symfony4/Behat 注入功能不起作用“您请求的服务不存在”
- typescript - 使用打字稿播种猫鼬(MongoDB)数据库