如何更新包含mongoose中对象数组的此模型

时间:2017-03-25 00:45:19

标签: node.js mongodb express mongoose

我想知道如何用mongoose更新喜欢的数组:

var postSchema = new mongoose.Schema({
    author: String,
    content: String,
    date: String,
    likes: [{theID: String}],
    numDate: Number
});

var UserSchema = mongoose.Schema({
    username: {
        type: String
    },
    password: {
        type: String
    },
    email: {
        type: String
    },
    first: {
        type: String
    },
    posts: [postSchema],
    last: {
        type: String
    },
    followers: [{theID: String}],
    following: [{theID: String}],
    img: { data: Buffer, contentType: String },
    admin: {type: Boolean, default: false}

});

我可以将新帖子等内容推送到数据库中的某个用户 这样做:

User.update({_id: req.user.id}, {
    $push: {"posts": {_id : req.body.theData}}
}, function(err, user){
    res.redirect('profile');
});

我是否可以通过类似的方式查看特定用户,然后查看用户拥有的特定帖子并更新它以将字符串推送到喜欢的数组?

1 个答案:

答案 0 :(得分:0)

首先你需要选择你想要更新的帖子,比如不喜欢,你可以在帖子{_id: req.user.id,_id:posts._id}的_id的帮助下做到这一点然后你需要更新像这样可以这样做的数组{$push: {"posts.$.likes": req.user.anotherUserId}} //anotherUserId is of user who liked it.如果用户不喜欢帖子从数组中删除id,则可以使用用户ID。

User.update({_id: req.user.id,_id:posts._id}, {
        $push: {"posts.$.likes": req.user.id}
    }, function(err, user){

    });