我试过这个,它允许 null
, undefined
,并完全省略要保存的 key :
{
myField: {
type: String,
validate: value => typeof value === 'string',
},
}
这不允许保存
''
(空字符串):{
myField: {
type: String,
required: true,
},
}
如何在 Mongoose 中强制字段为
String
并且不存在 null
和 undefined
而不禁止空字符串? 最佳答案
通过使所需字段有条件,可以实现:
const mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
myField: {
type: String,
required: isMyFieldRequired,
}
});
function isMyFieldRequired () {
return typeof this.myField === 'string'? false : true
}
var User = mongoose.model('user', userSchema);
有了这个,
new User({})
和 new User({myField: null})
会抛出错误。但空字符串将起作用:var user = new User({
myField: ''
});
user.save(function(err, u){
if(err){
console.log(err)
}
else{
console.log(u) //doc saved! { __v: 0, myField: '', _id: 5931c8fa57ff1f177b9dc23f }
}
})
关于mongoose - 在 Mongoose 中,我如何要求字符串字段不为空或未定义(允许长度为 0 的字符串)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44320745/