我正在一个项目上,我有一个带有一个唯一字段的猫鼬模式,而另一个不是唯一的,当我尝试使用schema.update更新此模型时出现了我的问题,但它正常工作,但是现在我的问题来了当我尝试更新架构中的另一个非唯一字段并保留唯一字段时,它将引发唯一验证器错误。这是myschema
`var DepartmentSchema = new Schema({
Name:{ type: String,unique: true, required: true, },
DepartmentHead: String});
DepartmentSchema.plugin(uniqueValidator, {message: '{VALUE} is already
taken.'});
export default mongoose.model('Department', DepartmentSchema);`
` 假设我已经在数据库中有一条记录,例如
{"_id":"5b2a450cbcc28b260c673a02",Name":"Finance",
"DepartmentHead": "zadiki hassan"}
使用代码
Department.update({_id:5b2a450cbcc28b260c673a02},
{ $set:{
Name:"Finance",
DepartmentHead:"samebody's name"
}},
{ upsert: true,runValidators: true},
function(err, dept) {
if (err){
console.log(err);
console.log(dept);
});
当我这样做时,我收到一个我无法理解的唯一验证错误,原因是输入了已经存在的财务信息。但事实是,该记录是我要更新的记录,仅此唯一字段将保留与以前相同,但其他字段可能会更改。每个字段都可能更改,这就是为什么我必须通过每个要更新的字段的原因,因为我不知道可能会更改什么,所以现在唯一的字段没有更改时就会出现问题。谢谢大家提前