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

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

主站蜘蛛池模板: 威宁| 阜新市| 临沭县| 怀化市| 湖南省| 张家界市| 抚远县| 木里| 新兴县| 卢湾区| 和政县| 上犹县| 民和| 台东县| 泗阳县| 松潘县| 望谟县| 台东市| 锡林郭勒盟| 兴宁市| 宜君县| 鄂尔多斯市| 商城县| 县级市| 顺义区| 青阳县| 嘉兴市| 宁乡县| 衢州市| 杭锦后旗| 北安市| 枣庄市| 大石桥市| 清丰县| 锡林浩特市| 逊克县| 新疆| 南江县| 彭水| 九寨沟县| 武陟县|