0

我是猫鼬的新手,我搜索了很多,但找不到答案。请帮助,提前谢谢。

const user = new mongoose.Schema({
    email: {
        type: String,
        required: true,
        unique: true
    },
    rollno: {
        type: Number,
        required: true,
        unique: true,
        
    },
    password : {
        type: String,
        required: true,
    },
    isVoter: {
        type: Boolean,
        required: true,
        default: true
    }
}, {
    timestamps: true
});

我可以有一个依赖于isVoter值的模式吗?例如,如果isVoter的值为false,那么我们应该有这样的模式:

const user = new mongoose.Schema({
    email: {
        type: String,
        required: true,
        unique: true
    },
    rollno: {
        type: Number,
        required: true,
        unique: true,

    },
    password : {
        type: String,
        required: true,
    },
    isVoter: {
        type: Boolean,
        required: true,
        default: true
    },
    promises: [
        {
           type: String
        }
    ]
    , {
    timestamps: true
});
4

2 回答 2

0

您可以pre在猫鼬中使用钩子,检查文档并在保存之前检查isVoter值,如果您不想保存承诺,请尝试this.promises = undefined

user.pre('save',  function(next) {
    if(this.isVoter== true){
       this.promises = undefined
    }
    else{
      this.promises = "hello"
      //do somethings
    }
   next();
});

并且应该在模式中定义承诺

于 2021-02-06T17:42:27.000 回答
0

您可以通过以下方式定义一个变量是否required基于另一个属性:

promises: [
        {
           type: String,
           required: function(){
             return this.isVoter == false
           }
        }
    ]

因此,promises仅当isVoter为 false 时才需要。否则将不需要。

于 2021-02-06T16:24:50.580 回答