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

parameter not being passed between controller and service

我有一些非常简单的代码,我想深入了解这个概念:

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 调用时,它 returns 成功但终端或邮递员没有输出。我究竟做错了什么?它似乎返回未定义。

更新

控制器:

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);

 }

}

这个returns未定义

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

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

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

更新:

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

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