javascript - 控制器和服务之间没有传递参数
问题描述
我有一些非常简单的代码,我想深入了解这个概念:
控制器.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);
});
}
服务.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);
}
}
这将返回未定义
解决方案
您需要按照预期传递一个对象retrieveSoundID
:
fileService.retrieveSoundID({ customer_id, file_name }).then(function(val) {
res.send(val);
});
而不是传递 2 个参数,您只需传递一个带有customer_id
andfile_name
属性的对象
更新:
您需要将数据对象传递给retrieveSoundID
函数,因为它需要一个数据对象:
fileService.retrieveSoundID({ data: req.body}).then(function(val) {
res.send(val);
});
推荐阅读
- gcc - 英特尔编译器无法处理小数的绝对值
- javascript - 全局变量不更新外部函数
- javascript - 在 textarea 中使用 pug 模板引擎显示变量值
- asp.net - 如何在 Vs 代码中使用命令行设置 asp.net core 启动项目
- c# - C# 中汇编元数据中的 AssemblyRef 和 TypeRef 有什么区别?
- swift - 将原型单元连接到视图控制器 [Swift 4]
- node.js - web3.eth.getBlockNumber 返回 { [Function: get] request: [Function: bound] }
- google-app-engine - 使用 Google Cloud 和图像优化创建 CDN
- ios - 颤振-iOS;应用程序已运行但无法存档
- rest - HBASE 如何在 REST API 中使用页面、排序、排序?