簡體   English   中英

無法使用Node.js Express MongoDB Mongoose CoffeeScript進行POST

[英]Cannot POST with Node.js Express MongoDB Mongoose CoffeeScript

更新:我找到了解決方案,請查看本頁底部...

我有一個用CoffeScript編寫的Node.js,Express,MongoDB,Mongoose項目,我可以創建和讀取數據,但我無法更新。

這就是我的代碼的樣子;

app.js

 # update
 app.put "/admin/:id.:format?", (req, res) ->
    Content.findById req.body.content.id, (err, c) ->
        c.title = req.body.content.title
        c.body = req.body.content.body
        c.save (err) ->
            switch req.params.format
                when "json"
                    res.send c.__doc
                else
                    res.redirect "/admin"

edit.jade

h2 Edit Content
form(method='post', action='/admin/' + c.id)
  input(name='content[id]', value=c.id, type='hidden')
  input(name='_method', value='PUT', type='hidden')
div
  label Title:
    input(name='content[title]', value=c.title || '')
div
  label Body:
    textarea(name='content[body]')=c.body || ''
div
  input(type='submit', value='Save')

這就是我的控制台所說的

127.0.0.1 - - [Thu, 13 Oct 2011 21:39:55 GMT] "POST /admin/4e96ec17fd7da7cb18000001 HTTP/1.1" 404 - "http://localhost:1234/admin/4e96ec17fd7da7cb18000001/edit" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.83 Safari/535.2"

這就是我的瀏覽器告訴我的內容

Cannot POST /admin/4e96ec17fd7da7cb18000001

表單向服務器發送POST請求,但您的路由是針對PUT請求的。

我在http://expressjs.com/guide.html上找到了解決方案:

“當使用帶有表單的PUT等方法時,我們可以使用一個名為_method的隱藏輸入,它可以用來改變HTTP方法。為此,我們首先需要使用methodOverride中間件, 它應該放在bodyParser下面,這樣就可以了利用它包含表格值的req.body。“

app.use express.bodyParser()
app.use express.methodOverride()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM