Извлечение объекта из пользовательской модели с использованием $ pull, проблемы с несколькими объектами - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь удалить объект поста из пользовательской модели, я привязываю эти ссылки к посту, который они создали, вот как я пытаюсь в настоящий момент получить пост

        userModel.findOneAndUpdate(
            { email: req.query.email, posts: req.query.postid },
            // { $pull: { posts: req.query.postid } },
            { $pull: { posts : { number: mongoose.Types.ObjectId(req.query.postid) } }},
            { new: true },
            function (error, user) {
                if (error) {
                    res.json("error in /testing backend ===",error)
                }
                console.log(`Post id ===== ${req.query.postid}`);
                console.log(`Email===== ${req.query.email}`);
                console.log(`returning user====${user}`)
                res.json('Successfully updated user');
            }
        );

вот как Я создал сообщение

userModel.findOne({ email: req.body.author }, function(error, user) {
            const locationURL = req.files.map((item) => item.location);

            postModel.create({ ...req.body, image: locationURL }, (error, returnedDocuments) => {
                if (error) {
                    throw new Error(error);
                }
                user.posts.push({ number: returnedDocuments._id, title: req.body.title, image: locationURL });
                user.save((err) => {
                    console.log(err);
                });
            });

. Первоначально в модель пользователя было вставлено только 1 элемент, но я добавил еще несколько элементов, а затем возникли проблемы при извлечении объекта, спасибо за вашу помощь.

это из моей БД относительно массива моих сообщений

enter image description here

1 Ответ

0 голосов
/ 22 января 2020

Для массива объектов вы можете получить нужный документ с помощью позиционного оператора { "<array>.$" : value }.

{ $pull: { posts.$.number : req.query.postid }}

Вы можете просмотреть документы по позиционным операторам , чтобы узнать больше .

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