Mongoose save()不更新数据库文档中数组中的值

我试图使用GUI更新集合(单位)中的文档,更新后,我想更新集合(用户)中的值(user.units,它是单位名称的数组)。如果数组长度仅为1个元素,它将得到更新,并显示在数据库中,并且一切正常,但当单元数组有多个元素时,我尝试通过for循环进行更新,它将显示它已更新,但当我检查数据库时,它仍然没有更新

当我通过循环更新值时,我真的不明白为什么不更新数据库

整个编辑和更新功能:-

编辑单元:功能(req、res、next){
var数据=请求主体;
Client_data.Unit.findById(req.params.unitId,函数(err,Unit){
var错误=错误;
如果(错误){
错误=错误;
}否则,如果(!单位){
error=“FATAL:无法查找单元#”+req.params.unitId;
}否则{
开关(请求主体名称){
案例“图标”:
var Icon=unit.Icon;
User.find({“Units”:Icon},函数(err,users){
如果(错误)
控制台日志(err);
users.forEach(函数(u){
如果(u.Units.length>1){
对于(变量i=0;i<=u.Units.length;i++){
if(单位[i]==图标){
u、 单位[i]=所需主体值;
}
}
}
否则{
u、 单位=要求的主体值;
}
u、 保存(u);
});
});
单位[req.body.name]=req.body.value;
打破
案例“描述”:
单位[req.body.name]=req.body.value;
打破
违约:
单位[req.body.name]=req.body.value;
打破
}
var data=JSON.stringify(req.body);
单位。保存();
文书标题(200{
“内容长度”:data.Length,
“内容类型”:“应用程序/json”
});
res.end(数据);
}
});
}

请求正文:-

{name:'Icon',
值:'Health Utility 22c',
主键:“5395ed107cd92dc40eaafb56”
}

用户模式:-

var userSchema=mongoose.Schema({
用户名:{type:String,必需:true},
密码:{type:String},
名字:{type:String,必需:true},
LastName:{type:String,必需:true},
公司名称:{type:String},
电话号码:{type:Number},
开始日期:{type:Date,必需:true},
EndDate:{type:Date,必需:true,默认值:new Date('9999-12-12')},
ClientID:{type:ObjectId,ref:'Client',默认值:null},
部门ID:{type:ObjectId,ref:'Department'},
ManagerID:{type:ObjectId,ref:'User',默认值:null},
单位:[{type:String,必需:true}],
用户列表:{type:Array,默认值:[]},
访问权限:[{type:String,枚举:['DEMO','USER','MANAGER','ADMINISTRATOR','OWNER']},
凭据:{type:String},
之后:{type:Number},
SessionID:{type:String,默认值:null}
},{safe:true});

可能会通知Mongoose数据集已更改如下:

doc.markModified('pathToYourAttribute')

从文件中http://mongoosejs.com/docs/schematypes.html

person.anything={x:[3,4,{y:“changed”}]};
person.markModified(“任何”);

希望有帮助

发表评论