Изменение значения массива вложенных документов mongoose - PullRequest
0 голосов
/ 22 ноября 2018

Я получил запрос Мангуста, где я хочу изменить комментарий.Я получаю комментарий из приложения реагировать.Но это не работает, в чем может быть проблема?

Ниже приведен пример массива комментариев

"comments": [       
    {
        "createdAt": "2018-11-22T08:28:36.881Z",            
        "_id": "5bf668b4001de72dc089c849",     // commentid       
        "comment": "111111111111",            
        "username": "kohahn21"        
    }, 
    ....
]

Что я пробовал:

edit = await Post.update(
    { 'comments._id' : commentid },
    { '$set' : { 'comments.$.comment' : comment  } }, 
    { new: true }
);

ctx.body = edit;

ctx.body

{
    "n": 1,
    "nModified": 1,
    "ok": 1
}

Схема публикации

const Comment = new Schema({
    createdAt: { type: Date, default: Date.now },
    username: String, 
    comment: String
});

const Post = new Schema({
    username: String,    
    comments: { 
        type: [Comment],
        default: []
    },

});

module.exports = mongoose.model('Post',Post);

Я хочу получать комментарии, которые являются измененным комментариемраскладка.Что мне делать?

1 Ответ

0 голосов
/ 22 ноября 2018

Ваш синтаксис выглядит правильно.Но вместо «items» это должны быть «comments».

Попробуйте Post.update( { 'comments._id' : commentid }, {'$set' : { 'comments.$.comment' : comment } });

Кстати, новый флаг доступен только для операторов find-and.

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