MVC与节点/表达和MySQL

时间:2018-11-04 15:47:21

标签: mysql node.js express

我很困惑。我在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进行调用?

1 个答案:

答案 0 :(得分:1)

我同意。路由器中不应有任何数据库查询,这在MVC中被视为控制器的一部分。

模型应该提供围绕数据库查询的包装函数,可以从控制器调用该包装函数。

许多节点应用程序(可能还有教程)会选择简单性而不是模块化,这就是为什么您会看到类似的代码。