簡體   English   中英

如何使用 node.js 上的方法使用 express 獲取更新信息

[英]How to use method put on node.js with express for update info

我正在嘗試使用帶有 express 和 mongoose 的 nodejs 創建 CRUD,當我嘗試更新表單中的內容時,當我使用 POST 方法執行此操作時,這會清空所有寄存器。 這是我的代碼:

玉石模板

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);

您需要使用 PUT 方法而不是 POST。 要使用 PUT,您需要首先安裝方法覆蓋模塊,這可以通過... npm install method-override --save 來完成。

BodyParser 不適用於圖像上傳,因此請確保您的server.js 中有例如multer

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

然后只需按照他們的頁面,例如這樣做:

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

這里的關鍵是使用處理圖像的解析器。 您在 Jade 表單中具有以下屬性:

enctype="multipart/form-data"

這就是“禁用” BodyParser 的原因,因為它不會解釋它。 如果你把它拿出來,你會看到 BodyParser 正在工作。

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

快樂編碼!

暫無
暫無

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

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