1. ホーム
  2. javascript

[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法

2022-07-11 05:10:10

質問

mysqlデータベースからのJSONレスポンスで設定されるモデルを持っています。モデルデータは、データベース内のboolean/tinyintフィールドにtrueまたはfalseで設定され、そのフィールドは 1 または 0 .

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

の代わりに、mysql からの JSON レスポンスを正しく真偽値にする方法はありますか? 1 または 0 あるいは、フェッチ時 (そしてビューがレンダリングする前) にモデルを更新して true または false というように、1か0のプロパティに基づくのでしょうか?

例えば、私のモデルのデータは次のようなものです。 {"isChecked":"1"} のように見えますが、必要なのは {"isChecked":true}

どんな提案でも大いに感謝します!

どのように解決するのですか?

必要なのは 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))
  });
}