0

我有一个架构,其中我有一个数组 Modules,在该数组中我想获取与 req.body.ModId 中收到的具有相同 ModuleID 的元素,我得到那个元素,我想设置那个元素的 ModuleStatement并保存它,但它不会将 ModuleStatement 保存在数据库中 这是架构

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

以下是从 Modules 数组中获取所需元素的查询

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 与 req.body 的 ModId 匹配,但是当我为其分配语句并保存父文档时,更改不会反映在数据库中。我认为可能是父文档可以保存数组元素的更改状态,所以我在父文档上调用了 Save() 函数,如 bot.save() 但它也不起作用。我该如何保存它?

4

0 回答 0