Как сохранить элемент массива во вложенном документе в mongoose?

У меня есть схема, в которой у меня есть массив Модули, в этом массиве я хочу получить элемент, который имеет тот же ModuleID, что и полученный в req.body.ModId, я получаю этот элемент, и я хочу установить ModuleStatement этого элемента и сохранить его, но не сохраняет ModuleStatement в базе данных. Вот схема

var botSchema = new Schema({
Bot_name: String,
UserName:String,
Modules: [{
    ModuleStatement: String,
    ModuleID: String,
    ModuleResponse: [{
        Response: String,
        TransBotID: String
    }]
}]
});

ниже приведен запрос для получения нужного элемента из массива модулей

botSchema.find({Bot_name:req.body.BotName},function(err,bot){
if(err){
    throw err;
} else{
    //update module here
    botSchema.find({'Modules.ModuleID':req.body.ModId},{_id:0,Modules:
    {$elemMatch:{ModuleID:req.body.ModId
    }}},function(err,data){
        if(err){
            throw err;
        } else{
            console.log('module array element');
            console.log(data[0]);
            data[0].ModuleStatement=req.body.Statement;
            console.log('module stateupdated',data[0].ModuleStatement);
            data[0].save();
            res.send('upgraded');
        }
    })
}
})

это возвращает желаемый элемент массива Modules, который сопоставляет ModuleID с ModId req.body, однако, когда я назначаю ему инструкцию и сохраняю родительский документ, изменения не отражаются в базе данных. Я подумал, что родительский документ может сохранить измененный элемент массива, поэтому я вызвал функцию Save() для родительского документа, например, bot.save(), но он тоже не сработал. Как я могу сохранить его?

0 ответов

Другие вопросы по тегам