我有以下模式作为示例:
const categorySchema = new mongoose.Schema({
categoryId: {type: Number},
title: {type: String, default: "standard"},
})
我希望categoryId等于1的类别必须总是"标准"的,如果没有指定标题,它将分配categoryId = 1。在猫鼬中有办法做到这一点吗?
这里有两种情况:
-
categoryId等于1的类别,必须始终为"标准">
可以使用预钩子,代码是这样的:
const categorySchema = new mongoose.Schema({
categoryId: {type: Number},
title: {type: String, default: "standard"},
})
categorySchema.pre('save', function (){
if(this.categoryId === 1){
this.title = "standard";
}
})
const categoryModel = mongoose.model('Category', categorySchema);
const category = new categoryModel({title: 'Greaat', categoryId: 1});
await category.save();
如果没有指定标题,它将分配categoryId = 1
在你当前的代码中,它不应该工作,因为你用default: "standard"
指示,如果没有指定标题,你必须分配标准所以你应该保留默认属性并在prehook中管理它来实现这一点但在我看来,这个逻辑很复杂也许你需要更好地思考一下问题出在哪里,因为这种解决方案太复杂了