【问题标题】:parameter not being passed between controller and service参数未在控制器和服务之间传递
【发布时间】:2021-09-21 21:42:26
【问题描述】:

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

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

更新

控制器:

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

 }

}

返回未定义

【问题讨论】:

标签: javascript node.js promise postman backend


【解决方案1】:

您需要按照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);
});

【讨论】:

  • 查看我的更新!仍然有问题。感谢您的支持!
  • 您的两个问题似乎都与如何将对象作为参数传递给函数有关,无论有无解构。如果我对您的问题的回答没问题,请将其标记为已回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2013-07-30
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多