モデル取得時に 1 を true に、または 0 を false に変換する方法 質問する

モデル取得時に 1 を true に、または 0 を false に変換する方法 質問する

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

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

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

例えば、私のモデルのデータは、{"isChecked":"1"}必要なときに{"isChecked":true}

ご提案がありましたら、ぜひよろしくお願いいたします。

ベストアンサー1

必要なのは を使用して をstringに変換し、 を使用して結果をブール値に変換することだけです。int+!!

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))
  });
}

おすすめ記事