我想将router.get((与查询与sql查询分开,但是当我将直接函数声明为router.get((函数的参数时,我遇到了此错误。
用户.js
const express = require('express');
const router = express.Router();
const database = require('../queries/userQueries');
router.get('/users',database.getAllUsers);
module.exports = router;
用户查询.js
function getAllUsers(req, res, next) {
res.locals.connection.query('SELECT * from usuarios',
function (error, results, fields) {
if (error){
res.send(error);
return;
}
res.send(results);
});
};
module.exports = getAllUsers;
错误:Route.get(( 需要一个回调函数,但得到了一个 [对象未定义] 在路线上。(匿名功能([作为获取](/home/antonio/achaiAPI/node_modules/express/lib/router/route.js:202:15( 在功能。(匿名功能([作为获取](/home/antonio/achaiAPI/node_modules/express/lib/router/index.js:510:19( 在对象。(/home/antonio/achaiAPI/api/routes/user.js:11:8( 在Module._compile(内部/模块/CJS/加载器.js:678:30( 在Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10( at Module.load (internal/modules/cjs/loader.js:589:32( at tryModuleLoad (internal/modules/cjs/loader.js:528:12( 在Function.Module._load(内部/模块/CJS/加载器.js:520:3( at Module.require (internal/modules/cjs/loader.js:626:17( 在需要(内部/模块/CJS/助手.js:20:18(
您将函数本身getAllUsers
分配给module.exports
,而不是分配给module.exports
的属性。因此,当您使用require
导入它时,它会解析为所述函数,而不是将该函数作为其属性之一的对象。
尝试将导入的对象分配给表示函数的变量名称:
const express = require('express');
const router = express.Router();
const getAllUsers = require('../queries/userQueries');
router.get('/users', getAllUsers);
module.exports = router;
你会使用
const database = require('../queries/userQueries');
router.get('/users',database.getAllUsers);
当您的userQueries.js
将函数分配给exports
的属性时:
module.exports.getAllUsers = function getAllUsers( ...
getAllUsers 已经是一个函数,所以你可以直接使用。 将router.get('/users',database.getAllUsers);
更改为router.get('/users',database);
。您仍然可以在文件中返回对象userQueries.js