错误:Route.get() 需要一个回调函数但是得到了 [object Undefined] NODE.JS + SQL
我想将 router.get() 与 sql 查询中的查询分开,但是我遇到了这个错误,当我将直接函数声明为 router.get() 函数的参数时它可以工作。
User.js
const express = require('express');
const router = express.Router();
const database = require('../queries/userQueries');
router.get('/users',database.getAllUsers);
module.exports = router;
userQueries.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;
Error: Route.get() requires a callback function but got a [object Undefined] at Route.(anonymous function) [as get] (/home/antonio/achaiAPI/node_modules/express/lib/router/route.js:202:15) at Function.proto.(anonymous function) [as get] (/home/antonio/achaiAPI/node_modules/express/lib/router/index.js:510:19) at Object. (/home/antonio/achaiAPI/api/routes/user.js:11:8) at Module._compile (internal/modules/cjs/loader.js:678:30) at 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) at Function.Module._load (internal/modules/cjs/loader.js:520:3) at Module.require (internal/modules/cjs/loader.js:626:17) at require (internal/modules/cjs/helpers.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;
当您的
userQueries.js
已将函数分配给
exports
的
属性
时,您将使用
const database = require('../queries/userQueries');
router.get('/users',database.getAllUsers);
:
module.exports.getAllUsers = function getAllUsers( ...
getAllUsers 已经是一个函数,所以你可以直接使用。
将
router.get('/users',database.getAllUsers);
更改为
router.get('/users',database);
。你仍然可以在
userQueries.js
文件中返回一个对象