express.js(node.js framework)无法正确连接文件

ryevplcw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(394)

这个问题在这里已经有答案了

如何从异步调用返回响应(42个答案)
两年前关门了。
我目前正在使用node.js和express框架构建我的第一个api。有了这个api,我想从sql数据库中检索数据。我认为基础是正确的,比如http调用的路由、到数据库的连接和第一个sql测试调用。
我唯一的问题是..(类)之间的连接。。。控制器和..(类)。。它自己。我已经搜索(并找到)了很多好的例子和基本指南,但在这一部分的斗争。我会很快解释文件,并试图解释我的问题屁股尽可能清楚!
控制器负责:http路由
类负责对数据库的mysql调用
注:将有更多的控制器和类,使代码更易于管理
我现在的代码如下:
分类控制器.js

let express = require('express'),
router = express.Router();
Categorie = require('../models/categorie');

router.get('/categories' , (req, res) => {
    console.log(" called but the result is: "+Categorie.getTest); //MARKB
    res.json({ "test" : Categorie.getTest });
});

module.exports = router; //> imported by the main (node) app.js

分类.js

let connection = require('../connection/db');

function getTest() {
    let answer = 0;

    connection.connectDatabase.query('SELECT 1 + 1 AS solution', (err, rows, fields) => {
        if (err){
            throw err
        };
        answer = (rows[0].solution);
    });
    return answer;
}

module.exports = {
    getTest: getTest()
};

我确信连接本身不是问题所在。因为在运行express app.js时,函数gettest()会运行并通过console.log显示结果。
但是当我调用…/api/categories时。我得到一个json响应:{“test”:0}
markb console.log也是如此
我很确定我调用gettest函数的方式是错误的。。。但我真的找不到替代方法,希望堆栈溢出的人能帮我。
app.js和db.js的代码可能不是原因,但如果它有帮助的话,这里是:
应用程序.js

const express = require('express');
let bodyParser = require('body-parser');
const http = require('http');
const app = express();

app.use(bodyParser.json());

// Setup header control
app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    next();
})

// app.use('/db', require('./connection/db.js'));  --> not necessary now
app.use('/api', require('./controllers/categoriesController'));

app.listen(8124, "127.0.0.1");
console.log("Express server listening on port 8124, 127.0.0.1");

数据库.js

let mysql = require('mysql');
let settings = require('../settings.json');
let db;

function connectDatabase() {
    if (!db) {
        db = mysql.createConnection(settings);

        db.connect((err) => {
            if(!err) {
                console.log('Database is connected!');
            } else {
                console.log('Error connecting database!');
            }
        });
    }
    return db;
}

module.exports = {
    connectDatabase: connectDatabase()
};

我真的希望有人能帮我。提前谢谢!!

ahy6op9u

ahy6op9u1#

gettest是一个函数。通过categorie.gettest()调用

相关问题