Не совсем понимаю, как правильно нужно разбивать логику на controllers и models в nodeJS при работе с backend приложения. Допустим, у меня есть пример
Данный код находится в model моего приложения, и логически я понимаю, что модель отвечает только за выбор из базы, а проверку и все остальное должен выполнять контроллер, но я не совсем понимаю как это сделать и я пробовал часть кода перенести в контроллер, и экспортировать его, но у меня ничего не получилось( Прошу, помогите, хотя-бы на данном примере! Мне главное понять принцип работы с MVC в ноде!!!
Как я уже написал - >
postModejs.js
exports.homePage = function (req, res) {
db.query('SELECT * FROM `posts`', function (err, result) {
console.log(result);
res.render('pages/home', {object: result});
});
};
exports.currentPostPage = function(req, res){
db.query('SELECT * FROM `posts`', function (err, result) {
if (err){
console.log(err);
}
var post = result.filter(item => {return (item.id == req.params.id)? item: false})[0];
if (post === undefined){
res.render('pages/404');
} else {
res.render('pages/post-page', {postId: req.params.id, item: post});
}
});
};
server.js
var express = require("express");
var bodyParser = require('body-parser');
var login = require('./controllers/login.controller');
var register = require('./controllers/register.controller');
var db = require('./db');
var pageroutes = require('./models/pageroutes');
var controllers = require('./controllers/new-post.controller');
var app = express();
app.set("view engine", "ejs");
app.use("/public", express.static("public"));
app.use(bodyParser.urlencoded({ extended : false}));
app.use(bodyParser.json());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
var router = express.Router();
//route to handle user registration
router.post('/register', register.register);
router.post('/login', login.login);
app.use('/api', router);
app.get('/register', pageroutes.registerPage);
app.get('/login', pageroutes.loginPage);
app.get('/', pageroutes.homePage);
app.post('/', controllers.newPost);
app.get('/post/:id', pageroutes.currentPostPage);
app.get('/contact', pageroutes.contactPage);
app.use(pageroutes.errorPage);
app.listen(3000);
Предлагаю организовать код следующим образом:
В роуте '/users' вызывается метод контроллера. В прилагаемом примере контроллер - userController, а вызывается его метод - handleUsers.
Этот метод получает помощью userModel.getAll всех пользователей и выбирает из них всех с id кратным 5.
Вместо обращения к базе данных в userModel используется обращение к ресурсу.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости