Javascript 仅防止未定义的值
在mongoose中,我可以将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
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
确保字符串非空)。