#javascript #node.js #mongodb #express
#javascript #node.js #mongodb #выразить
Вопрос:
Я пытаюсь загрузить небольшое изображение с дополнительными полями, такими как «цена». 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
});
})
Вот множественный экземпляр
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, name, price
но, похоже, отправляется и сохраняется в БД только идентификатор.
Я приветствую любую помощь.
Комментарии:
1. показать req.body.price и req.file
Ответ №1:
Ответ прост: при определении типа схемы ключевое слово «type» должно быть в нижнем, а не в верхнем регистре. Сервер выдал исключение после того, как я установил значение по умолчанию для поля «name».