我正在尝试更新 accountGroup 并确保没有重复。这是我的架构:
const uniqueValidator = require('mongoose-unique-validator');
exports.accountGroupSchema = new mongoose.Schema({
accountGroup:{
type: String,
unique:true
},
rangeFrom:Number,
rangeTo:Number
});
exports.accountGroupSchema.plugin(uniqueValidator);
const glAccTypeSchema = new mongoose.Schema({
accountType:String,
accountGroup:[exports.accountGroupSchema]
})
glAccTypeSchema.plugin(uniqueValidator);
exports.accountGroup = mongoose.model("glAccountGroup",exports.accountGroupSchema);
exports.accountType = mongoose.model("glAccountType", glAccTypeSchema);
我的初始更新代码正常工作:
exports.accountType.findOneAndUpdate(
{ _id: accountGrouptypeID },
{ $set: { "accountGroup.$[outer]": accountGroupValues } },
{ "arrayFilters": [{"outer._id": accountGroupID}]},function(err,done) {
if (!err){
console.log("updated")
} else {
console.log(err);
}
});
但是当我添加 { runValidators: true, context: 'query' } 时,即使没有重复发生,代码也总是显示验证失败。
//code with runValidators
exports.accountType.findOneAndUpdate(
{ _id: accountGrouptypeID },
{ $set: { "accountGroup.$[outer]": accountGroupValues } },
{ "arrayFilters": [{"outer._id": accountGroupID}],runValidators: true, context:
'query' },function(err,done) {
if (!err){
console.log("updated")
} else {
console.log(err);
}
});
runValidators 的放置/位置有问题吗?你能帮助我吗?谢谢