确定保持空值的列的类型



我已经阅读了这个问题的答案,为什么typeof null是"对象"?我正在尝试找出特定问题的解决方案。

我正在开发一个 Web 应用程序,前端使用 angularJs,服务器代码 ASP.NET MVC。我们将模型传递到前端,然后更新值。这是我试图找到解决方案的情况:

当我们在 Web 界面中使用退格键从输入类型="数字"中删除数字时,输入控件的值变为 null。在我们的模型中,数值被定义为不可为空(在我们的数据库中,字符串也应该转换为空值而不是空值(。

我正在尝试找出一种方法,如果它们是数字,则将键设置为 0,如果它们是字符串,则设置为空字符串。

我添加了一个名为verifyInput的新方法,这是代码的开头:

/**
* @returns true or false 
* */
Model.prototype.verifyInput = function () {
for (let i = 0; i < this.keys.length; i++) {
const key = this.keys[i];
if (this[key] === null) {
this[key] = 
}
}
}

我不确定如何编写上述方法。我已经发现我不能使用 typeof 或 lodash 方法来检查键的类型,因为它是返回对象。我需要将数字设置为 0,将字符串设置为空字符串,但保留日期时间值。你看到我的问题了吗,你有解决方案的想法吗?也许我应该在这里使用尝试/捕获?

我删除这些键的想法似乎有效。我得到了正确的行为(例如,在这种情况下,服务器的值会自动显示为 0(。

我添加了以下代码:

Model.prototype.verifyInput = function () {
let i = this.keys.length;
while (i--) {
const key = this.keys[i];
if (this[key] === null) {
this.keys.splice(i, 1); // Let's remove the null element from the model
}            
}
return true;
}

基于另一个非常有用的答案,我发现循环遍历数组并删除项目,而不会中断循环,并且在我迄今为止进行的测试中它运行良好。

最新更新