我正在使用nodejs,angular,mongo开发一个Web应用程序。有一个奇怪的问题。模型没有从json对象正确绑定。
这是我的架构。
var mongoose = require('mongoose');
var productSchema = new mongoose.Schema({
name : {type: String},
imageURL : {type: String, default: '/'},
created : {type: Date, default: Date.now}
});
module.exports = mongoose.model('product', productSchema);
我正在使用POST
将产品传递给我的index.js。
router.post('/pictures/upload', function (req, res, next) {
uploading(req, res, function(err){
if (err) {
console.log("Error Occured!");
return;
}
var product = new productModel(req.body.pName);
product.imageURL = req.file.path;
product.update(product);
res.status(204).end();
});
var product
仅包含_id
,created
,imageURL
。不是name
属性。
但console.log(req.body.pName)
打印出{"_id":"56d80ea79d89091d21ce862d","name":"sunny 2","__v":0,"created":"2016-03-03T10:15:03.020Z","imageURL":"/"}
它没有获得name
属性。为什么??? ???
请告知。
答案 0 :(得分:1)
找到解决方案。它没有正确绑定,因为内容类型是multipart / form-data。我必须解析jSON对象,如下所示:
var product = new productModel(JSON.parse(req.body.pName));
pName
包含字符串中的值。
希望这有助于某人。
答案 1 :(得分:0)
尝试这种方式,您只需创建Product对象的实例,然后更新。
var Product = mongoose.model('products');
uploading: function(req, res) {
// console.log(req.body); find your object
// in your case it looks req.body.pname
var product = new Product(req.body.pname);
product.imageURL = req.file.path;
product.save(function (err, product) {
if (err){
console.log(err);
}else{
res.status(204).end();
// it returns json object back - callbcak
// res.json(product);
}
})
},