当我要将信息作为post Method发送到我的Rest API时,Angular发送空字段,随后,我的数据库保存了空值。
但是我想阻止它,并且我不想将空字段从Angular发送到后端。
例如,在下面的示例中,Angular在entityTypeName字段中发送一个“”,不幸的是,Postgres DB将保存为空而不是null。
{
createdAt: "2019-01-11T13:59:52.311678"
entityTypeName: ""
id: "1bd46fce-fc6f-410f-acaf-74d5964cf92b"
updatedAt: "2019-01-11T13:59:52.311678"
updatedBy: "admin@admin.com"
version: 0
}
我正在寻找一种通用的解决方案,以防止在所有情况下都在Angular端发送强度值。
答案 0 :(得分:2)
这是一个执行此操作的函数。只需将您的对象提供给该函数,它将删除空键。
function removeEmptyStringsFrom(obj) {
const clone = { ...obj };
Object.entries(clone).forEach(([key, val]) => val === '' && delete clone[key]);
return clone;
}
const test = {
notEmpty: 'toto',
empty: '',
};
console.log(removeEmptyStringsFrom(test));
编辑:接受挑战!
const removeEmptyStringsFrom = (obj) => Object
.entries({ ...obj })
.filter(([key, val]) => val !== '')
.reduce((prev, curr) => ({ ...prev, [curr[0]]: curr[1] }), {});
const test = {
notEmpty: 'toto',
empty: '',
};
console.log(removeEmptyStringsFrom(test));
答案 1 :(得分:0)
由于您没有提供任何示例,因此我将基于您在体内传递对象的实例(让其命名为entity
)并由HttpClient处理序列化为json。
如果要使用空字符串删除属性,则可以删除该属性
delete entity.entityTypeName
对于将删除所有空字符串属性的通用解决方案,您可以使用HttpInterceptor,