【问题标题】:Prevent only undefined values仅防止未定义的值
【发布时间】:2018-06-15 10:11:07
【问题描述】:

在猫鼬中,我可以将required: true 设置为阻止...虚假?价值观。

但我想允许''[]0null,并且只阻止undefined

我该怎么做?

const MySchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  }
});

我想让document.name 成为null

【问题讨论】:

    标签: javascript node.js mongoose mongoose-schema


    【解决方案1】:

    要阻止undefined,同时仍然允许null,您可以使用自定义验证器:

    const MySchema = new mongoose.Schema({
      name: {
        type: String,
        validate: {
          validator: v => v !== undefined,
          message: 'name is required',
        },
      }
    });
    

    【讨论】:

    • 如果类型是[String],我想允许[],如果类型是String,我想允许''等等。(我不想要一个Mixed 类型)
    • 默认的required 验证器在出错时提供的信息不是比这个自定义验证器多得多吗?
    • @theonlygusti 您可以向其中添加消息。如果您更喜欢使用默认验证器,则可以,但它不允许空字符串或 null。
    • 你知道默认验证器是什么样的吗?所以我可以复制它的各个方面,除了检查功能
    • 我的回答基本上是复制它的方方面面。它在这里定义:它在这里定义:github.com/Automattic/mongoose/blob/…,如果您没有提供默认消息,它只会设置一条默认消息,并使用this.requiredValidator 为给定类型调用 checkRequired。对于字符串,checkRequired 这样做:github.com/Automattic/mongoose/blob/…&& value.length 确保字符串非空)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2013-09-08
    相关资源
    最近更新 更多