0

我正在尝试更新 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 的放置/位置有问题吗?你能帮助我吗?谢谢

4

0 回答 0