为什么模型在nodejs中没有正确绑定?

时间:2016-03-03 12:12:36

标签: javascript json node.js mongodb

我正在使用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仅包含_idcreatedimageURL。不是name属性。

console.log(req.body.pName)打印出{"_id":"56d80ea79d89091d21ce862d","name":"sunny 2","__v":0,"created":"2016-03-03T10:15:03.020Z","imageURL":"/"}

它没有获得name属性。为什么??? ???

请告知。

2 个答案:

答案 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);
        }
    })
},