我正在尝试上传带有“价格”等额外字段的小图片。 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被发送并保存到数据库中。
我欢迎您提供帮助。
答案 0 :(得分:0)
答案很简单:定义模式类型时,关键字“ type”必须小写而不是大写。在为“名称”字段设置默认值后,服务器引发了异常。