【发布时间】:2014-10-03 20:13:10
【问题描述】:
我试图弄清楚如何通过标题而不是 ID 来路由我的 GET 单个对象路由参数。我知道body-parser 允许该请求,但不知道如何修改我当前的路由设置以允许这种情况发生。
我的想法是将所有 blogpost_id 更改为 blogpost_title,但我遇到了这个错误。
{
"message":"Cast to ObjectId failed for value \"Data Cost Upload\" at path \"_id\"",
"name":"CastError",
"type":"ObjectId",
"value":"Data Cost Upload",
"path":"_id"
}
routes.js:
//Route for individual blogs
router.route('/blog/:blogpost_id')
// START GET method blog by ID
.get(function(req, res) {
Blogpost.findById(req.params.blogpost_id, function(err, blogpost) {
if (err)
res.send(err);
//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.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' });
});
});
我如何链接到每个单独的对象:
<div class="blog-content">
<% blogpost.forEach(function(blogpost) { %>
<tr>
<td><h2><a href="#" class="blog-title"><%= blogpost.title %></a></h2></td>
<td><h3><%= blogpost.date %></h3></td>
<td><h3 class="blog-category"><%= blogpost.category %></h3></td>
<td><h3 class="blog-tagline"><i><%= blogpost.tagline %></i></h3></td>
<td><p><%=: blogpost.content | truncate:800 | append:'...' %></p></td>
<td><a href="/blog/<%= blogpost.title %>" class="blog-read-more">Read More</a></td>
</tr>
<% }); %>
</div>
点击“阅读全文”的结果网址:http://localhost:8080/blog/Data%20Cost%20Upload
【问题讨论】:
标签: javascript node.js mongodb express