2016-05-12 13 views
1

エクスプレスとマングースでnodejsを使ってCRUDを作成しようとしていますが、フォームからコンテンツを更新しようとすると、それはPOSTメソッドで行います。ここに私のコードは付属しています。node.jsにputメソッドを使用して更新情報を表現する方法

ジェイドテンプレート

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

BOD yParserは、画像アップロードのためのものではありませんので、たとえば、あなたが持っていることを確認あなたのserver.jsmulterします

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

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

それからちょうど自分のページに従うと、例えばこれを行います

ここで重要なのは、画像を扱うパーサーを使用することです。あなたの玉フォームに次の属性があります:

enctype="multipart/form-data" 

これは、それが解釈しないためBodyParserを「無効にする」ものです。それを取り出すと、BodyParserが動作しています。

PS:申し訳ありませんが、今すぐ詳細な回答をしていない、これは私があなたに与えることができます:)彼らのページは非常に良いですが、私は非常に簡単にソリューションを見つけることでしょう!

ハッピーコーディング!

+0

これは正しいです、multerのためにmullerで書かれているところが正しいです:) –

+1

私の間違い!私はあなたのために働いてうれしいです:) – FPJ

+0

あなたに会いに! –

関連する問題