gpt4 book ai didi

node.js - Mongoose 不保存已编辑的文档

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:03 25 4
gpt4 key购买 nike

我最近开始使用 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)非常陌生,我不知道现在该去哪里查看。

感谢您的宝贵时间,非常感谢!

最佳答案

使用Document.set方法。它将把您的属性(property)标记为已修改。

doc.set post:req.body.post.content

关于node.js - Mongoose 不保存已编辑的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com