删除嵌套数组猫鼬中的字符串

时间:2020-01-24 04:34:33

标签: node.js mongoose

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))

我需要找到一个特定的用户,并且在该用户内匹配帖子ID,然后删除links数组中的链接之一。当我像上面那样操作时,它将删除整个数组,而不是我希望它删除在arrays中的links数组中的特定链接。 每个用户有一个或多个帖子。我需要更新特定用户的单个帖子。如果用户要删除图像,则将其从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 个答案:

答案 0 :(得分:1)

已解决。供将来参考:

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