当前位置: 首页 > 知识库问答 >
问题:

错误:route.get()需要一个回调函数,但得到了一个[object Undefined]node.js+SQL

双恩
2023-03-14

我想将router.get()与sql查询中的查询分开,但我出现了这个错误,当我将direct函数声明为router.get()函数的html" target="_blank">参数时,它可以工作。

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;

错误:route.get()需要回调函数,但在route.(anonymous function)处获得[object Undefined](/Home/Antonio/AchaiAPI/Node_Modules/Express/Lib/Router/route.js:202:15)在function.proto处获得[object Undefined](/Home/Antonio/AchaiAPI/Node_Modules/Express/Lib/Router/route.js:510:19)。(/home/antonio/achaiapi/api/routes/user.js:11:8)在module._compile(internal/module/cjs/loader.js:678:30)在object.module._extensions.js(internal/module/cjs/loader.js:689:10)在module.load(internal/module/cjs/loader.js:589:32)在tryModuleLoad(internal/module/cjs/loader.js:528:12)在function.module.load(

共有2个答案

淳于思淼
2023-03-14

getAllUsers已经是一个函数,所以您可以直接使用。将router.get('/users',database.getAllusers);更改为router.get('/users',database);。仍然可以在userqueries.js文件中返回对象

邰胤
2023-03-14

您将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将函数分配给导出的属性时:

module.exports.getAllUsers = function getAllUsers( ...
 类似资料: