我正在创建一个包含create,get,update和delete提供程序的CRUD应用程序。
创建并获得完美的工作,但我的更新功能有问题。当我想得到答案时,它是空的。我不知道为什么在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 :(得分:0)
我也是nodejs的新手。我认为问题可能是multipart / form-data帖子。即使您使用正文解析器,您仍然无法直接从您的多部分帖子中获取数据。
body-parser:由于它们复杂且通常较大,因此无法处理多部分主体。
因此,当您验证密码时,它不会永远传递,因为您的密码将是未定义的或什么也不是。 您需要multiparty来分析您的多部分帖子。
但是,我很困惑你说你可以在你的创建功能中打印一些东西。我认为它会打印未定义,但它没有。