Node.js 替换空字符串''&引用;来自req.body,值为空/未定义

Node.js 替换空字符串''&引用;来自req.body,值为空/未定义,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,当req.body包含值为“”的键时,我想将空字符串更改为未定义或null 我在谷歌上搜索了很长一段时间,我可能从错误的角度来研究它,因为我完全是个业余爱好者,但我只能找到如何验证输入是否为空字符串。问题是我不希望在数据库中保存空字符串,但这些字段不是必需的,因此验证在这里没有帮助 我知道解决这个问题的一种方法是通过req.body JSON并在保存之前更改值,但这听起来不是最好的方法 可以用猫鼬来做吗 const car = new CarSchema() Object.assign(car,

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

我在谷歌上搜索了很长一段时间,我可能从错误的角度来研究它,因为我完全是个业余爱好者,但我只能找到如何验证输入是否为空字符串。问题是我不希望在数据库中保存空字符串,但这些字段不是必需的,因此验证在这里没有帮助

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

可以用猫鼬来做吗

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

从现有文档中删除或转换这些属性的最佳方法是,在保存文档之前,将其设置为“未定义”以删除文档中的此键,或者如果值为“
”,则将其设置为空:

user.first_name = user.first_name ? user.first_name : undefined;
user.signup_date = user.signup_date ? user.signup_date : undefined;
user.save();
或:

通过引用(模式类型)的方式,可以转到数组解释。上面写着:

要覆盖此默认值,您需要将
default
值设置为
未定义
null
。当然,当我们创建并量化自己的模式时


在那之后,这是不可能的,或者你必须在里面编码Mongo。这并不重要,两者都是对象处理,无论是在Mongo中还是在JavaScript中。Mongo提供您已保存的内容,需要以与JavaScript相同的方式进行处理。

从现有文档中删除或转换这些属性的最佳方法是,将它们设置为“未定义”以删除文档中的此键,或者在保存文档之前,如果值为“
”,则将其设置为空:

user.first_name = user.first_name ? user.first_name : undefined;
user.signup_date = user.signup_date ? user.signup_date : undefined;
user.save();
或:

通过引用(模式类型)的方式,可以转到数组解释。上面写着:

要覆盖此默认值,您需要将
default
值设置为
未定义
null
。当然,当我们创建并量化自己的模式时

在那之后,这是不可能的,或者你必须在里面编码Mongo。这并不重要,两者都是对象处理,无论是在Mongo中还是在JavaScript中。Mongo提供了您保存的内容,需要以与JavaScript相同的方式进行处理

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