首页 > 解决方案 > Mongoose 模式在更新时跳过验证

问题描述

假设我有 categoryNameSchema,

const CategoryNameSchema = new mongoose.Schema({
  name1: {
    type: String,
    required: [true, errorList.categoryName.name1.required],
    validate: {
      validator: function(v){
        return Category.findOne({ 'categoryName.name1': v }).collation( { locale: 'en', strength: 2 } ).then(categoryName => !categoryName)
      },
      message: () => errorList.categoryName.name1.notUnique
    }
  },
  name2: {
    type: String,
    required: [true, errorList.categoryName.name2.required],
    validate: {
      validator: function(v){
        return Category.findOne({ 'categoryName.name2': v }).collation( { locale: 'en', strength: 2 } ).then(categoryName => !categoryName)
      },
      message: () => errorList.categoryName.name2.notUnique
    }
  },
});

想知道是否可以运行更新查询来验证所有现有文档,同时通过 id 从验证中排除当前选择的文档?(下方查询)

CategoryName.updateOne({ _id: req.params.id }, categoryNameData, { runValidators: true });

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读