如何在模型获取时将 1 转换为真或 0 转换为 false

2022-08-30 04:11:46

我有一个模型,该模型是使用来自mysql数据库的JSON响应设置的。模型数据以 true 或 false 形式设置为数据库中的布尔值/tinyint 字段,该字段使用 或 。10

在我看来,我有一个绑定,用于检查带有下划线的布尔值。当然,当我的模型收到数据时,它被设置为 true 或 false,并且检查失败。_.isBoolean10_.isBoolean

无论如何,是否有办法让我的来自mysql的JSON响应正确地成为布尔值真值或假值,而不是或,或者最好有没有办法让我的模型在获取时(以及在视图呈现之前)自行更新为强制转换或基于它的1或0属性?10truefalse

例如,我的模型的数据看起来像我需要它的时候{"isChecked":"1"}{"isChecked":true}

非常感谢您的任何建议!


答案 1

您所需要的只是转换为 with 并将结果转换为布尔值:stringint+!!

var response = {"isChecked":"1"};
response.isChecked = !!+response.isChecked

您可以在以下方法中执行以下操作:parse

parse: function (response) {
  response.isChecked = !!+response.isChecked;
  return response;
}

更新:7年后,我发现转换更加优雅。此外,改变对象也不是最好的主意。话虽如此:Number(string)

parse: function (response) {
  return Object.assign({}, response, {
    isChecked: !!Number(response.isChecked), // OR
    isChecked: Boolean(Number(response.isChecked))
  });
}

答案 2

不要使用双精度值:

!!1 = true;

!!0 = false;

obj.isChecked = !!parseInt(obj.isChecked);