2016-05-12 37 views
1

我試圖創建一個帶有express和mongoose的nodejs的CRUD,當我嘗試更新窗體中的內容時,這個空的所有寄存器當我用POST方法做。這裏說到我的代碼:如何使用方法放在node.js與快遞更新信息

玉模板

extends ../includes/layout 

block content 
    div(class="wrap") 
    include ../includes/header 
    div(class="column-group vertical-space") 
     div(class="all-50 push-center") 
     div(class="all-100") 
      h1 #{title} 
     div(class="all-100") 
      form(role="form" method="post" action="#{project.id}" enctype="multipart/form-data") 
      div(class="all-50") 
       h3 Cambiar nombre a #{project.ProjectName} 
       input(type="text" name="projectName" required) 
       p Cambiar detalles 
       textarea(name="details") 
       p Cambiar precio 
       input(type="number" name="ammount") 
       p Cambiar localización 
       input(type="text" name="localize") 
      div(class="all-50") 
       p Cambiar Imágen 
       input(type="file" name="image" multiple) 
       //p #{plane} 
       //input(type="file" name="plane") 
      div(class="all-100") 
       button(type="submit") Enviar 



    div(class="push") 
    include ../includes/footer 

控制器

saveEditProject : function (req, res, file){ 
     Project.findById(req.params.id, function(err, project){ 
     if(!project){ 
      res.redirect('/project'); 
     } 
     project.ProjectName = req.body.projectName; 
     project.ProjectDetails = req.body.details; 
     project.ProjectAmount = req.body.ammount; 
     project.ProjectLocation = req.body.localize; 
     project.ProjectFileName = req.body.image; 
     project.save(function (err) { 
      if (err) { 
       res.send("not now"); 
      } 
      res.redirect('/project'); 
     }); 

     }); 
    }, 

路線

router.post('/edit/:id', controller.saveEditProject); 
+0

使用['router.put'。](http://expressjs.com/en/4x/api.html#router.METHOD) –

+0

這樣就得到了http:// localhost:3000/project/edit /5734b65f5e8cc78d277e63dc?projectName=testing&details=&ammount=&localize=&image=13122913_798137460320744_2366020950260825105_o.jpg在瀏覽器上,但沒有任何信息保存在數據庫中 –

+0

您確定'project'不是'null'嗎? –

回答

1

佈德yParser並不意味着圖像上傳,以便確保您有例如multerserver.js

var multer = require('multer') 
var upload = multer({ dest: 'uploads/' }) 

然後只要按照自己的頁面,比如這樣做:

router.post('/edit/:id', upload.array(), controller.saveEditProject); 

這裏的關鍵是使用處理圖像的解析器。你在你的玉形式有以下屬性:

enctype="multipart/form-data" 

這就是「禁用」BodyParser,因爲它不會解釋它。如果你把它拿出來,你會看到BodyParser的工作。

PS:對不起,現在不給你更詳細的答案,這是我現在可以給你的:)他們的頁面非常好,我相信你會很容易找到解決方案!

快樂編碼!

+0

是這樣的,正確的地方與穆勒書面multer :) –

+1

我的錯!我很高興它爲你工作:) – FPJ

+0

很高興認識你! –