无法将值从req.body添加到猫鼬模式

时间:2019-04-24 14:09:48

标签: javascript node.js mongodb express

我正在尝试上传带有“价格”等额外字段的小图片。 img似乎存储在目标文件夹中,但多余的字段并未随文件一起保存。

我正在使用multer和bodyParser.json来读取req.body和req.file的字段。

这是帖子:

router.route('/pictures/add').post(upload, (req, res) => {


        console.log(req.body.price); //works
        console.log(req.file); //works

    var picture = new Picture({
        name : req.file.originalname,
        price : req.body.price,
        id : req.file.filename
    }); 


    console.log(picture); //logs only the id as in req.file.filename. 
    //name and price are missing

    picture
        .save()
        .then(picture => {
            console.log(picture);
            res.status(201).json({
                picture: 'Added successfully',
                id: picture.id, //id as in req.file.filename
                name: picture.name, //missing
                price: picture.price //missing
            });
        })

这里是multer实例

const upload = multer({dest: 'pictures/'}).single('img');
app.use(bodyParser.json());

这是图片模式

import mongoose from 'mongoose';

const Schema = mongoose.Schema;

let Picture = new Schema({
    name: {
        Type: String
    },
    price: {
        Type: String
    }
});

export default mongoose.model('Picture', Picture);

我希望数据库保存所有字段,例如:id,名称,价格 但似乎只有ID被发送并保存到数据库中。

我欢迎您提供帮助。

1 个答案:

答案 0 :(得分:0)

答案很简单:定义模式类型时,关键字“ type”必须小写而不是大写。在为“名称”字段设置默认值后,服务器引发了异常。