未在控制器和服务之间传递参数



我有一些非常简单的代码,我想下来理解这个概念:

controller.js:

router.get('/retrieve-sound-id', retrieveSoundID);
module.exports = router;
async function retrieveSoundID(req, res, next) {
const customer_id = req.body['customer-id'];
const file_name = req.body['file-name'];

fileService.retrieveSoundID(customer_id, file_name).then(function(val) {
res.send(val);
});
}

service.js:

const mysql = require('mysql');
module.exports = {
retrieveSoundID
};
function retrieveSoundID({ customer_id, file_name  }) {
return new Promise((resolve, reject) => {
resolve(file_name)
});
}

邮差中的数据:

{
"customer-id": 1,
"file-name": "Bob"
}

当我进行API调用时,它成功返回,但在终端或邮递员中没有输出。我做错了什么?它似乎正在返回undefined。

更新

控制器:

router.get('/retrieve-sound-id', retrieveSoundID);
module.exports = router;
async function retrieveSoundID(req, res, next) {

fileService.retrieveSoundID(req.body).then(function(val) {
res.send(val);
});
}

服务:

function retrieveSoundID({ data }) {
return new Promise((resolve, reject) => {
console.log(data);
}
}

返回未定义的

您需要按照retrieveSoundID:中的预期传递对象

fileService.retrieveSoundID({ customer_id, file_name }).then(function(val) {
res.send(val);
});

不传递2个参数,只传递一个具有customer_idfile_name属性的对象

更新:

您需要将数据对象传递给retrieveSoundID函数,因为它需要一个数据对象:

fileService.retrieveSoundID({ data: req.body}).then(function(val) {
res.send(val);
});

最新更新