- Node.js 6.x Blueprints
- Fernando Monteiro
- 416字
- 2021-07-14 10:35:07
Creating the application controllers
The next step is to create the controls for the models User and Band:
- Within the
controllers
folder, create a new file calledUser.js
and add the following code:var models = require('../models/index'); var User = require('../models/user'); // Create Users exports.create = function(req, res) { // create a new instance of the Users model with request body models.User.create({ name: req.body.name, email: req.body.email }).then(function(user) { res.json(user); }); }; // List Users exports.list = function(req, res) { // List all users models.User.findAll({}).then(function(users) { res.json(users); }); };
Tip
Note that the first line of the file imports the
index
model; this file is the basis for creation of all the controls, it is thesequelize
that is used to map the other models. - Do the same for the Band controller within the
controllers
folder; create a file calledBand.js
and add the following code:var models = require('../models/index'); var Band = require('../models/band'); // Create Band exports.create = function(req, res) { // create a new instance of the Bands model with request body models.Band.create(req.body).then(function(band) { //res.json(band); res.redirect('/bands'); }); }; // List Bands exports.list = function(req, res) { // List all bands and sort by Date models.Band.findAll({ // Order: lastest created order: 'createdAt DESC' }).then(function(bands) { //res.json(bands); // Render result res.render('list', { title: 'List bands', bands: bands }); }); }; // Get by band id exports.byId = function(req, res) { models.Band.find({ where: { id: req.params.id } }).then(function(band) { res.json(band); }); } // Update by id exports.update = function (req, res) { models.Band.find({ where: { id: req.params.id } }).then(function(band) { if(band){ band.updateAttributes({ name: req.body.name, description: req.body.description, album: req.body.album, year: req.body.year, UserId: req.body.user_id }).then(function(band) { res.send(band); }); } }); } // Delete by id exports.delete = function (req, res) { models.Band.destroy({ where: { id: req.params.id } }).then(function(band) { res.json(band); }); }
- Now let's refactor the
index.js
controller and add the following code:// List Sample Bands exports.show = function(req, res) { // List all comments and sort by Date var topBands = [ { name: 'Motorhead', description: 'Rock and Roll Band', album: 'http://s2.vagalume.com/motorhead/discografia /orgasmatron-W320.jpg', year:'1986', }, { name: 'Judas Priest', description: 'Heavy Metal band', album: 'http://s2.vagalume.com/judas-priest/discografia /screaming-for-vengeance-W320.jpg', year:'1982', }, { name: 'Ozzy Osbourne', description: 'Heavy Metal Band', album: 'http://s2.vagalume.com/ozzy-osbourne/discografia /diary-of-a-madman-W320.jpg', year:'1981', } ]; res.render('index', { title: 'The best albums of the eighties', callToAction: 'Please be welcome, click the button below and register your favorite album.', bands: topBands }); };
Note that, using the previous code, we just created a simple list to show some albums on the home screen.
推薦閱讀
- GeoServer Cookbook
- Arduino開發實戰指南:LabVIEW卷
- 批調度與網絡問題的組合算法
- 軟件供應鏈安全:源代碼缺陷實例剖析
- Python程序設計與算法基礎教程(第2版)(微課版)
- Developing SSRS Reports for Dynamics AX
- JSP程序設計實例教程(第2版)
- Distributed Computing in Java 9
- 深度實踐KVM:核心技術、管理運維、性能優化與項目實施
- Python應用開發技術
- MySQL核心技術與最佳實踐
- C#網絡編程高級篇之網頁游戲輔助程序設計
- Python程序設計現代方法
- Python量子計算實踐:基于Qiskit和IBM Quantum Experience平臺
- Flask Web開發實戰:入門、進階與原理解析