node.js - 将 req.body 中的空字符串 ''" 替换为 null/undefined
问题描述
当 req.body 包含值为“”的键时,我想将空字符串更改为未定义或 null。
我已经在谷歌上搜索了很长时间,我可能是从错误的方式来研究它,因为我是一个完全的业余爱好者,但我只能找到如何验证输入是否为空字符串。问题是我不希望在我的数据库中保存空字符串,但这些字段不是必需的,因此验证在这里没有帮助。
我知道解决这个问题的一种方法是通过 req.body JSON 并在保存之前更改值,但这听起来不是最好的方法。
是否可以使用猫鼬来做到这一点?
const car = new CarSchema()
Object.assign(car, req.body) //same time replace '' -> undefined
car.save()
解决方案
从现有文档中删除或转换这些属性的最佳方法,将它们设置为 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 文档(Schema Types),您可以转到 Arrays 说明。在那里,它说:
要覆盖此默认值,您需要将
default
值设置为undefined
或null
。当然,当我们创建和量化我们自己的模式时
var car = new Schema({
toys: {
type: [{
name: String,
features: [String]
}],
default: undefined //or null
}
})
之后就不可能了,或者你必须在里面编写 Mongo 代码。没关系,两者都是对象处理,无论是在 Mongo 中还是在 JavaScript 中。Mongo 为您提供了您已保存的内容,并且需要以与 JavaScript 相同的方式进行处理。
推荐阅读
- django - 将 Admin ManyToManyField 提取到 CSV 文件
- c# - 以编程方式创建的用户控件的 C# Winform Click 事件
- asp.net-mvc - 如何在 mvc 中自动增加 ID
- bash - 每十分钟计算方括号中的 ID 的 Bash 脚本
- unreal-engine4 - 设计没有控制器的虚幻引擎 VR 购物应用
- django - Django过滤器至少获得n条记录
- postgresql - 如何识别 postgres 表字段中的无效日期?
- mysql - 如果连接表不包含行,则 mySQL 中的连接表返回 NULL
- reactjs - 如何根据 React-Router 中的 Route 更改更改状态?
- c# - 在 C# 中使用 SSH.NET SFTP 下载目录