错误:Route.get() 需要一个回调函数,但得到了一个 [对象未定义] NODE.JS + SQL



我想将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

相关内容

最新更新