Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅防止未定义的值_Javascript_Node.js_Mongoose_Mongoose Schema - Fatal编程技术网

Javascript 仅防止未定义的值

Javascript 仅防止未定义的值,javascript,node.js,mongoose,mongoose-schema,Javascript,Node.js,Mongoose,Mongoose Schema,在mongoose中,我可以将required:true设置为阻止。。。假的?价值观 但是我想允许',[],0,null,并且只允许块未定义 我该怎么做 const MySchema = new mongoose.Schema({ name: { type: String, required: true } }); 我想允许document.name为null以防止未定义,但仍允许null您可以使用自定义验证器: const MySchema = new mongoos

在mongoose中,我可以将
required:true
设置为阻止。。。假的?价值观

但是我想允许
'
[]
0
null
,并且只允许块
未定义

我该怎么做

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

我想允许
document.name
null
以防止
未定义
,但仍允许
null
您可以使用自定义验证器:

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

如果类型是
[String]
我想允许
[]
,如果类型是
String
我想允许
'
等等(我不想混合
类型),默认的
必需的
验证器在出错时提供的信息不是比这个自定义验证器多得多吗?@theonlygusti您可以向它添加一条消息。如果您喜欢使用默认验证器,您可以,但它不允许空字符串或null。您知道默认验证器是什么样子的吗?所以我可以复制它的每一个方面,除了检查功能,我的答案基本上是复制它的每一个方面。它在这里定义:它在这里定义:,如果您没有提供默认消息,它只会设置一个默认消息,并使用
this.requiredValidator
调用给定类型的checkRequired。对于字符串,它的
checkRequired
执行以下操作:(
&&value.length
确保字符串非空)。