удаление строки во вложенном массиве mongoose - PullRequest
0 голосов
/ 24 января 2020
const AllPostsSchema = new Schema({
    user: {
        type: Schema.Types.ObjectId,
        ref: 'users'
    },
    posts: [{
        postid: {
            type: String
        },
        title: {
            type: String
        },
        category: {
            type: String
        },
        subcategory: {
            type: String
        }, category: {
            type: String
        },
        description: {
            type: String
        },
        name: {
            type: String
        },
        price: {
            type: Number
        },
        email: {
            type: String
        },
        phonenumber: {
            type: Number
        },
        language: {
            type: String
        },
        make: {
            type: String
        },
        model: {
            type: Number
        },
        odometer: {
            type: Number
        },
        condition: {
            type: String
        },
        state: {
            type: String
        },
        town: {
            type: String
        },
        city: {
            type: String
        },
        links: [{ type: String }],

        date: {
            type: Date,
            default: Date.now
        }
    }]

})    


 AllPosts.findOneAndUpdate({ 'user': req.query.userid },
                    { $pull: { 'posts': { 'links': req.query.link } } }
                )
                    .then(post => console.log(post))

Мне нужно найти определенного пользователя c, и в пределах этого пользователя сопоставить идентификатор записи, затем удалить одну из ссылок в массиве ссылок. когда я делаю это, как описано выше, он удаляет весь массив, вместо этого я хочу, чтобы он удалил указанную c ссылку в массиве ссылок в массиве сообщений. У каждого пользователя есть одно или несколько сообщений. Мне нужно обновить один пост определенного пользователя c. если пользователь хочет удалить изображение, я удаляю его из amazon s3, тогда мне нужно удалить ссылку из этого массива ссылок поста, чтобы он не создавал битые теги img во внешнем интерфейсе.

AllPosts.findOneAndUpdate({ 'user': req.query.userid, 'posts.postid': req.query.postid },
                { $pull: { 'links': req.query.link } }
            )
                .then(post => console.log(post))

это также не работал.

1 Ответ

1 голос
/ 24 января 2020

решаемая. Для дальнейшего использования:

  AllPosts.findOneAndUpdate({ 'user': req.query.userid, 'posts.postid': req.query.postid },
                    { $pull: { 'posts.$.links': req.query.link } }
                )
                    .then(post => console.log(post))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...