【问题标题】:Replace empty string ''" from req.body with value null/undefined将 req.body 中的空字符串 ''" 替换为 null/undefined
【发布时间】:2020-02-09 09:46:35
【问题描述】:

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

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

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

是否可以使用猫鼬来做到这一点?

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    从现有文档中删除或转换这些属性的最佳方法,将它们设置为 undefined 以在文档中删除此键,或者如果值为 "",则在保存文档之前设置为 null:

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

    或:

    user.first_name = user.first_name ? user.first_name : null;
    user.signup_date = user.signup_date ? user.signup_date : null;
    user.save();
    

    顺便提一下Mongoose documentation(Schema Types),你可以去Arrays的解释。在那里,它说:

    要覆盖此默认值,您需要将default 值设置为 undefinednull。当然,当我们创建和量化我们自己的架构时

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2021-10-30
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多