2015-11-03 42 views
0

我正在創建一個帶有創建,獲取,更新和刪除提供程序的CRUD應用程序。Node.js:響應爲空時,我想編輯提供商

創建並獲得完美的工作,但我有更新功能的問題。當我想得到答覆時,它是空的。我不知道爲什麼如果在app.post("/proveedor/new"),function(req,res){console.log(req.body)});正在打印身體,並在app.put("/proveedor/:id")....他們不給我的數據。

extends ../layout.jade 
block contenido 
div(class="col-md-3 center-block no-float top-space") 
    h1 Editar Proveedor 
    form(method="POST" action="/proveedor/#{product.id}?_method=put" style="margin-top:1.5em;" enctype="multipart/form-data") 

     div(class="form-group") 
      label Nombre 
      input(type="text" value="#{product.title}" name="titulo" placeholder="Ingresa tu nombre" class="form-control") 
     div(class="form-group") 
      label Descripcion 
      input(type="text" value="#{product.description}" name="descripcion" placeholder="Ingresa tu descripcion" class="form-control") 
     div(class="form-group") 
      label Costo 
      input(type="nombre" value="#{product.pricing}" name="costo" placeholder="Ingresa costo" class="form-control") 
     div(class="form-group") 
      input(type="file" name="avatar") 
     div(class="form-group") 
      label Contrasena 
      input(type="password" name="password" placeholder="Ingresa tu contrasena" class="form-control")  
     div(class="form-group text-right")    
      input(type="submit" class="btn btn-info" value="Guardar") 

而且我app.js

  var express = require('express'); 
      var mongoose = require('mongoose'); 
      var bodyParser = require('body-parser'); 
      var multer = require('multer'); 
      var upload = multer({ dest: 'upload/'}); 
      var fs = require('fs'); 
      var cloudinary = require('cloudinary'); 
      var method_override = require("method-override"); 
      var app_password = "12345"; 

      var app = express(); 

app.put("/proveedor/:id",function(solicitud,respuesta){ 
console.log(solicitud.body); 
if(solicitud.body.password == app_password){ 
    var data = { 
     title: solicitud.body.title, 
     description: solicitud.body.description, 
     pricing: solicitud.body.pricing 
    }; 

    if(solicitud.files.hasOwnProperty("avatar")){ 
     cloudinary.uploader.upload(solicitud.files.image_avatar.path, 
      function(result) { 
       data.imageUrl = result.url; 

       Product.update({"_id": solicitud.params.id},data,function(product){ 
        respuesta.redirect("/menu"); 
       }); 
      } 
     );   
    }else{ 
     Product.update({"_id": solicitud.params.id},data,function(product){ 
      respuesta.redirect("/menu"); 
     }); 
    } 


    }else{ 
     respuesta.redirect("/"); 
    } 
}); 

回答

0

我也是新的NodeJS。我認爲問題可能是多部分/表單數據。即使你使用body-parser,你仍然無法直接從你的多部分文章中獲取數據。

body-parser:這不處理多部分機構,由於它們的複雜性和通常大的性質。

因此,當您驗證密碼時,它不會永遠傳遞,因爲您的密碼將是未定義的或沒有任何內容。 您需要multiparty來分析您的多部分帖子。

但是,我很困惑,你說你可以在你的創建函數中打印一些東西。我認爲它會打印未定義的,但它沒有。

+0

是的昨天一個數字了。 Multer是解決方案。謝謝哥們。 – Francisco