【发布时间】:2014-01-29 16:04:37
【问题描述】:
我最近开始使用 Node.js,并且一直在尝试创建一个基本博客(使用 Express、MongoDB 和 Mongoose),我可以在其中创建、编辑和删除帖子。除了编辑之外,我已经设法让一切正常。这是创建帖子的路线示例,因此您可以查看我的方法。我已经使用 CoffeeScript 编写了它。如果这是一个问题,我可以编译和编辑帖子。
# [get] new post
app.get "/posts/new", ensureAuthenticated, (req, res) ->
res.render "posts/new",
title: "New Post"
user: req.user
# [post] new post
app.post "/posts", (req, res) ->
post = new Post(req.body.post)
post.save (err) ->
unless err
res.redirect '/posts'
else
res.redirect '/posts/new'
我遇到的问题是当我尝试编辑/保存帖子(文档)时。我没有看到任何错误,但数据库中的文档没有更新。我正在使用 PUT 请求,因为我读到它是由 Express 转换的。我的编辑路线如下:
# [get] edit post
app.get "/posts/:id/edit", (req, res) ->
Post.findById req.params.id, (err, doc) ->
res.render 'posts/edit',
title: 'Edit Post View'
post: doc
# [put] edit post
app.put "/posts/:id", (req, res) ->
Post.findById req.params.id, (err, doc) ->
doc.post = req.body.post.content
doc.save (err) ->
unless err
res.redirect '/posts'
console.log 'edit success'
else
console.log 'edit failed'
这是来自编辑帖子模板的表格:
form(method='post', action='/posts/' + post.id)
input(name='_method', value='PUT', type='hidden')
fieldset
legend Editing post
div.clearfix
label Post
div.input
input(name='post[content]', class='xlarge', value="#{post.content}")
div.actions
input(type='submit', value='Save', class='btn primary')
button(type='reset', class='btn') Reset
谁能帮我解决这个问题?我已经按照书中的教程进行了操作,这已经完成了,但它似乎对我不起作用。如果我看到一些错误,那将是一个开始,但由于我对 Node.js(和 JavaScript,真的)非常陌生,我现在不知道去哪里找。
感谢您的宝贵时间,非常感谢!
【问题讨论】:
标签: node.js mongodb express mongoose