我很困惑。我在mySql上看到的所有教程最终都是这样的:
在models / dbconnection.js
中 var mysql = require('mysql');
port = process.env.PORT || 3333;
if (port == 3333) {
var connection = mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'nameDataBase',
insecureAuth: true
});
} else {
console.log("Error");
}
connection.connect();
module.exports = connection;
然后在routes / user.js中
...
router.delete("/:id", verifyToken, (req, res) => {
const newLocal = "DELETE FROM login_user WHERE id = ?";
connection.query(newLocal, [req.params.id], (err,rows,fields) => {
if (err) {
res.sendStatus(500);
return;
}
console.log(rows.affectedRows);
res.status(200).send({delete: rows});
});
});
module.exports = router;
模型和控制器在这里不混在一起吗?如果明天我想更改数据库的类型,则必须在模型和路由中进行更改。我是否应该使用getAllUsersBlaBla(params)
之类的函数来创建models/user.js
之类的函数,然后再从routes/user.js
进行调用?
答案 0 :(得分:1)
我同意。路由器中不应有任何数据库查询,这在MVC中被视为控制器的一部分。
模型应该提供围绕数据库查询的包装函数,可以从控制器调用该包装函数。
许多节点应用程序(可能还有教程)会选择简单性而不是模块化,这就是为什么您会看到类似的代码。