将req.body中的空字符串“”替换为null / undefined

时间:2019-10-11 21:07:39

标签: node.js mongodb mongoose

当req.body包含键值为“”时,我想将空字符串更改为undefined或null。

我已经搜索了很长时间,由于我是一个业余爱好者,我可能会以错误的方式对其进行研究,但是我只能找到如何验证输入是否为空字符串。问题是我不想在数据库中保存空字符串,但是这些字段不是必需的,因此此处的验证无济于事。

我知道解决此问题的一种方法是通过req.body JSON并在保存之前更改值,但这听起来并不是最好的方法。

可以用猫鼬做吗?

const car = new CarSchema()
Object.assign(car, req.body) //same time replace '' -> undefined
car.save()

1 个答案:

答案 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值设置为   undefinednull。当然,当我们创建和量化自己的模式时

var car = new Schema({
     toys: {
          type: [{
              name: String,
              features: [String]
          }],
          default: undefined //or null
     }
})

之后,这是不可能的,或者您必须在其中编写Mongo。没关系,无论是在Mongo中还是在JavaScript中都是对象处理。 Mongo为您提供了已保存的内容,需要以与JavaScript相同的方式进行处理。