如何根据Mongoose中的其他属性设置属性值



我有以下模式作为示例:

const categorySchema = new mongoose.Schema({
categoryId: {type: Number},
title: {type: String, default: "standard"},
})

我希望categoryId等于1的类别必须总是"标准"的,如果没有指定标题,它将分配categoryId = 1。在猫鼬中有办法做到这一点吗?

这里有两种情况:

  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();
  1. 如果没有指定标题,它将分配categoryId = 1

在你当前的代码中,它不应该工作,因为你用default: "standard"指示,如果没有指定标题,你必须分配标准所以你应该保留默认属性并在prehook中管理它来实现这一点但在我看来,这个逻辑很复杂也许你需要更好地思考一下问题出在哪里,因为这种解决方案太复杂了

相关内容

  • 没有找到相关文章

最新更新