Как обновить вложенный объект mon go - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь создать функцию отчета для моего приложения.

. В клиентской части я делаю запрос на размещение:

.put(`http://localhost:3000/api/posts/report`, {
                        params: {
                            id: mongoId,
                            reportInfo: {
                                reported: true,
                                reportingUser: id
                            }
                        }
                    })

к этому внутреннему маршруту

router.put('/report', (req, res, next) => {
    postModel.findOneAndUpdate(
        { _id: mongoose.Types.ObjectId(req.query.id) },
        req.query,
        { new: true, useFindAndModify: false },
        (error, returnedDocuments) => {
            if (error) return next(error);
            res.json(returnedDocuments);
        }
    );
});

для этой модели

const postSchema = new mongoose.Schema(
    {
        title: { type: String },
        description: { type: String },
        image: { type: String },
        price: { type: String },
        location: { type: String },
        image: { type: Array },
        author: {
            type: String,
            ref: 'User'
        },
        reportInfo: {
            reported:{
                type: Boolean,
                default: false
            },

            reportingUser:{
            type: String
            }

        }
    },
    {
        timestamps: true
    }
);

есть идеи, почему он не обновляет объект reportInfo, нужно ли что-то делать, если в нем содержатся вложенные объекты?

спасибо

1 Ответ

0 голосов
/ 17 февраля 2020

Ваш код пытается заменить документ MongoDB. Попробуйте использовать $ set вместо прямой передачи req.query:

{ $set: { reportInfo: req.query.reportInfo } }

Я бы также проверил, должно ли быть req.query или req.body, поэтому просто выведите значение, чтобы сделать уверен, что он десериализован правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...