我是nodejs的新手,我正在尝试使用expressframework和mysql创建一个web应用程序。我知道在mvc架构中,视图是*.ejs文件。控制器应该有逻辑,模型应该集中在数据库上。
但我还是不太清楚模型里面应该是什么。我的控制器中有以下代码(可能是错误的,没有遵循mvc设计):
const mysql = require('mysql');
const db = mysql.createConnection(config);
db.query(query, (err, result) => {
if (err) {
return res.redirect('/');
}
res.render('index.ejs', {
users: result
});
});
现在,根据我所读的内容,控制器应该要求模型执行对数据库的查询,获得结果并呈现视图(index.ejs')。
我的问题是:model.js文件中应该包含什么?我能做这样的东西吗?
控制器.js
const db = require('./models/model.js');
db.connect();
const results = db.query(query);
if(results != null) {
res.render('index.ejs'){
users: result
});
}
js将对mysql进行查询,以处理任何错误并返回结果。
据我所知,我有两个选择。选项1:将回调函数传递给model并让model呈现视图(我认为这是错误的,model不应该与view通信吗?)选项2:可能使用async/await并等待model返回结果,但我不确定这是否可能或如何实现。
1条答案
按热度按时间jk9hmnmh1#
模型是数据库中存储的数据的编程表示。假设我有一个
employees
具有以下架构的表:另一张table叫
companies
```name: string
address: string
var db = require('mongo');
var employeeName = "bob";
db.connect(function(err, connection){
const Employee = require('./models/Employee.js'); // get model class
let employeeModel = new Employee(connection); // instantiate object of model class
employee.getByName(employeeName, function(err, result){ // convenience method getByName
})
}