当req.body包含键值为“”时,我想将空字符串更改为undefined或null。
我已经搜索了很长时间,由于我是一个业余爱好者,我可能会以错误的方式对其进行研究,但是我只能找到如何验证输入是否为空字符串。问题是我不想在数据库中保存空字符串,但是这些字段不是必需的,因此此处的验证无济于事。
我知道解决此问题的一种方法是通过req.body JSON并在保存之前更改值,但这听起来并不是最好的方法。
可以用猫鼬做吗?
const car = new CarSchema()
Object.assign(car, req.body) //same time replace '' -> undefined
car.save()
答案 0 :(得分:0)
从现有文档中删除或转换这些属性,将其设置为undefined以便在文档中删除此键的最佳方法;或者在保存文档之前,如果值是""
,则将其设置为null:
user.first_name = user.first_name ? user.first_name : undefined;
user.signup_date = user.signup_date ? user.signup_date : undefined;
user.save();
OR:
user.first_name = user.first_name ? user.first_name : null;
user.signup_date = user.signup_date ? user.signup_date : null;
user.save();
通过引用Mongoose documentation(架构类型)的方式,可以转到数组说明。在那里,它说:
要覆盖此默认设置,您需要将
default
值设置为undefined
或null
。当然,当我们创建和量化自己的模式时
var car = new Schema({
toys: {
type: [{
name: String,
features: [String]
}],
default: undefined //or null
}
})
之后,这是不可能的,或者您必须在其中编写Mongo。没关系,无论是在Mongo中还是在JavaScript中都是对象处理。 Mongo为您提供了已保存的内容,需要以与JavaScript相同的方式进行处理。