130

mysql データベースからの JSON 応答で設定されたモデルがあります。モデル データは、 true または false でデータベースの boolean/tinyint フィールドに設定され、1orを使用します0

私の見解では、アンダースコアのブール値をチェックするバインディングがあります_.isBoolean。もちろん、モデルがデータを受け取ると、true または false の代わりに1または代わりに設定され、チェックは失敗します。0_.isBoolean

とにかく、mysql からの JSON 応答を or の代わりにブール値の true または false 値にする方法はあります10、またはできれば、モデルをフェッチ時に (ビューがレンダリングされる前に) キャストtrueまたはfalseベースに更新する方法はありますか?それは1または0のプロパティですか?

たとえば、モデルのデータは、必要な{"isChecked":"1"}ときに次のようになります{"isChecked":true}

ご提案いただきありがとうございます。

4

5 に答える 5

221

必要なのは、 withに変換stringし、結果を boolean with に変換することだけです:int+!!

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

parseメソッドでこの操作を行うことができます。

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

更新Number(string): 7 年後、変換がよりエレガントであることがわかりました。また、オブジェクトを変更することは最善のアイデアではありません。そうは言っても:

parse: function (response) {
  return Object.assign({}, response, {
    isChecked: !!Number(response.isChecked), // OR
    isChecked: Boolean(Number(response.isChecked))
  });
}
于 2013-05-01T06:03:08.617 に答える
92

double not を使用します。

!!1 = true;

!!0 = false;

obj.isChecked = !!parseInt(obj.isChecked);
于 2013-05-01T05:54:22.950 に答える