2014-09-25 53 views
0

我有一個路由設置爲可以根據其ID訪問各個數據庫記錄。在我的主頁('/')我拉着所有的記錄,但每個頁面只顯示10條記錄和快速分頁模塊。當我點擊Read More時,我被髮送到適當的記錄頁面,但由於某種原因,我沒有看到我的任何CSS樣式,並且我傳遞給此視圖的數據將以undefined的形式返回。個人記錄被由/博客訪問/ blogpost_idExpressjs數據未被傳遞到視圖

routes.js:

var express = require('express'); 
var router = express.Router(); 
var blogDB = require('../config/blogDB.js'); 
var Blogpost = require('./models/blogModel.js'); 
var paginate = require('express-paginate'); 

//index 
router.use(paginate.middleware(10, 50)); 

    router.route('/') 

     // START POST method 
     .post(function(req, res) { 

      var blogpost = new Blogpost(); // create a new instance of a Blogpost model 

      blogpost.title = req.body.title; // set the blog title 
      blogpost.author = req.body.author; // set the author name 
      blogpost.tagline = req.body.tagline; // set the tagline 
      blogpost.content = req.body.content; // set the blog content 
      blogpost.category = req.body.category; // set the category 
      blogpost.tags = req.body.tags; // set the tags 
      blogpost.date = req.body.date; // set the date of the post 
       //Save Blog Post 
       blogpost.save(function(err) { 
        if (err) 
         res.send(err); 

        res.json({ message: 'Blog created.' }); 
       }); 

     }) // END POST method 


     // START GET method 
     .get(function(req, res, next) { 

      Blogpost.paginate({}, req.query.page, req.query.limit, function(err, pageCount, blogpost, itemCount) { 

       if (err) return next(err) 

         if (err) 
          res.send(err); 

         blogpost.title = req.body.title; // get the blog title 
         blogpost.author = req.body.author; // get the author name 
         blogpost.tagline = req.body.tagline; // get tagline 
         blogpost.content = req.body.content; // get the blog content 
         blogpost.category = req.body.category; // get the category 
         blogpost.tags = req.body.tags; // get the tags 
         blogpost.date = req.body.date; // get the date of the post 

         res.format({ 
          html: function() { 
           res.render('pages/index', { 
            blogpost: blogpost, 
            pageCount: pageCount, 
            itemCount: itemCount 
           }) 
          }, 
          json: function() { 

           res.json({ 
            object: 'blogpost', 
            has_more: paginate.hasNextPages(req)(pageCount), 
            data: blogpost 
           }) 
          } 
         }); // END res.format(html, json) 
      }); // END Blogpost.paginate 
     }); // END GET method 


    //Route for individual blogs 
    router.route('/blog/:blogpost_id') 


    // START GET method blog by ID 
    .get(function(req, res) { 

     var blogpost = new Blogpost(); // create a new instance of a Blogpost model 


     Blogpost.findById(req.params.blogpost_id, function(err, blogpost) { 
      if (err) 
       res.send(err); 

      blogpost.title = req.body.title; // update the blog title 
      blogpost.author = req.body.author; // update the author name 
      blogpost.tagline = req.body.tagline; // update the tagline 
      blogpost.content = req.body.content; // update the blog content 
      blogpost.category = req.body.category; // update the category 
      blogpost.tags = req.body.tags; //update the tags 
      blogpost.date = req.body.date; // update the date of the post 


      //res.json(blogpost); 
      res.render('pages/blogpost', { 
       blogpost: blogpost 
      }); 
     }); 
    }) // END GET method blog by ID 

    // START PUT method 
    .put(function(req, res) { 

     Blogpost.findById(req.params.blogpost_id, function(err, blogpost) { 

      if (err) 
       res.send(err); 


      blogpost.title = req.body.title; // update the blog title 
      blogpost.author = req.body.author; // update the author name 
      blogpost.tagline = req.body.tagline; // update the tagline 
      blogpost.content = req.body.content; // update the blog content 
      blogpost.category = req.body.category; // update the category 
      blogpost.tags = req.body.tags; //update the tags 
      blogpost.date = req.body.date; // update the date of the post 


      blogpost.save(function(err) { 
       if (err) 
        res.send(err); 


       res.json({ message: 'Blog updated.' }); 
      }); 

     }); 

    }) // END PUT method 

    // START DELETE method 
    .delete(function(req, res) { 

     Blogpost.remove({ 
      _id: req.params.blogpost_id 

     }, function(err, bear) { 
      if (err) 
       res.send(err); 

      res.json({ message: 'Successfully deleted' }); 
     }); 
    }); 



//about 
    router.get('/about', function(req, res) { 
      res.render('pages/about'); 
    }); 


module.exports = router; 

blogpost.ejs

<html> 
<head> 
    <% include ../partials/head %> 
</head> 

<body> 

    <header> 
     <% include ../partials/header %> 
    </header> 

    <div class="grid"> 
     <div class="col-1-1"> 
      <div class="blog-content"> 
       <h1><%= blogpost.title %></h1> 
      </div> 
     </div> 
    </div> 


    <footer> 
     <% include ../partials/footer %> 
    </footer> 

</body> 
</html> 

回答

0

您將要覆蓋的博文內容在router.route('/blog/:blogpost_id').get()方法。見這些行:

blogpost.title = req.body.title; // update the blog title 
blogpost.author = req.body.author; // update the author name 
blogpost.tagline = req.body.tagline; // update the tagline 
blogpost.content = req.body.content; // update the blog content 
blogpost.category = req.body.category; // update the category 
blogpost.tags = req.body.tags; //update the tags 
blogpost.date = req.body.date; // update the date of the post 

...你覆蓋,你只是(最有可能)空變量得到了博文,因爲這是你的GET方法。