Не удается добавить значения из req.body в схему mongoose

#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».