gpt4 book ai didi

javascript - Express.js(node.js框架)带有sql数据库,无法正确连接文件之间

转载 作者:行者123 更新时间:2023-11-29 17:19:30 25 4
gpt4 key购买 nike

我目前正在使用node.js 和express 框架构建我的第一个API。我想使用这个 API 从 SQL 数据库检索数据。我认为基础是正确的,比如 HTTP 调用的路由、数据库的连接以及第一个 SQL 测试调用。

我唯一遇到麻烦的部分是 ..(class)... Controller 和 ..(class).. 本身之间的连接。我搜索(并找到)了很多很好的示例和基础知识指南,但在这一部分上遇到了困难。我将很快解释这些文件并尝试尽可能清楚地解释我的问题!

controller is responsible for: the HTTP routing

class is responsible for MySQL calls to the DB

注意:将会有更多的 Controller 和类来使代码更好地管理

我目前的代码如下:

CategorieController.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

Categorie.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 响应:{“测试”:0}

MARKB console.log 也是如此

我很确定我以错误的方式调用了 getTest 函数...但我真的找不到替代方法,希望 Stack Overflow 上的人可以帮助我。

<小时/>

app.js 和 db.js 的代码可能不是原因,但如果它可以提供帮助,这里是:

App.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");

Db.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()
};
<小时/>

我真的希望有人能帮助我。预先感谢!

<小时/>

最佳答案

getTest 是一个函数。通过 Category.getTest() 调用它

关于javascript - Express.js(node.js框架)带有sql数据库,无法正确连接文件之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com