Node.js 如何使字段有条件地必须为空?

Node.js 如何使字段有条件地必须为空?,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,这不是一个“有时需要”的字段,但有点不同 我需要在Mongoose文档中有一个字段,根据文档中的其他数据,该字段永远不能填充 是否有办法定义模式,以便在填充了字段a时,该字段b必须为空 我强烈希望不要用mongoose钩子来解决这个问题…可以使用自定义验证器来完成,这个示例适用于mongoose版本5.x new Schema({ a: { type: String }, b: { type: String, default: null, validate: {

这不是一个“有时需要”的字段,但有点不同

我需要在Mongoose文档中有一个字段,根据文档中的其他数据,该字段永远不能填充

是否有办法定义模式,以便在填充了字段
a
时,该字段
b
必须为空


我强烈希望不要用mongoose钩子来解决这个问题…

可以使用自定义验证器来完成,这个示例适用于mongoose版本5.x

new Schema({
 a: {
  type: String
 },
 b: {
  type: String,
  default: null,
  validate: {
        validator: function (v) {
          if (this.a && v === null) {
            return true
          }
          return false
        },
        message: (props) => `${props.value} should be null!`
      }
 }
})

您可以使用自定义验证器。