官术网_书友最值得收藏!

  • 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:

  1. Within the controllers folder, create a new file called User.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 the sequelize that is used to map the other models.

  2. Do the same for the Band controller within the controllers folder; create a file called Band.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); 
              }); 
          } 
    
  3. 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.

主站蜘蛛池模板: 江陵县| 东辽县| 雷波县| 湖州市| 威远县| 金湖县| 革吉县| 交口县| 延津县| 万山特区| 安岳县| 微山县| 谷城县| 扬州市| 安泽县| 兴城市| 河西区| 故城县| 连州市| 吉首市| 水城县| 黎川县| 镇原县| 嘉鱼县| 菏泽市| 隆安县| 青神县| 招远市| 宁强县| 泗阳县| 梁山县| 彰化县| 青阳县| 凉城县| 繁昌县| 肃宁县| 德兴市| 望江县| 张掖市| 潍坊市| 聂拉木县|