8

1 対多の関係 (1 つの国 - 多くのワイン) で国に関連する Wine エンティティがあります。

これを json Web サービスで表現するには、次の 2 つの方法が考えられます。

1つは、全国をjsonに含めるだけです

{
  id: 76,
  code: "FR",
  name: "France"
}

{
  id: 79,
  name: "Bordeaux",
  country: {
      id: 76,
      code: "FR",
      name: "France"
    },
  year: "2005"
}

もう 1 つは、プレフィックスを付けて、各国のプロパティを同じレベルに含めています。

{
  id: 79,
  name: "Bordeaux",
  countryId: 76,
  countrCode: "FR",
  countryName: "France"
  year: "2005"
}

いずれにせよ、新しいワインを更新または作成するときは、国IDを保存するだけで、ワインのエンドポイントから国を変更することはできません

2 番目のアプローチは実装が簡単ですが (db に結合ビューがあり、シリアライザーはすべてのフィールドを json に変換するだけです)、最初のアプローチの方がエレガントだと思います。

この種の状況の標準があるかどうか、また、より一般的なアプローチがない場合に備えて知りたかっただけです...

ps: ソリューションの「落ち着き」について議論を始めるつもりはありません。この関係を処理するスマートでシンプルな方法を探しているだけです...

4

2 に答える 2

6

あなたの場合、国は毎回入れ子にすることを検討するのに十分小さいです。ただし、これは常に当てはまるとは限りません。これを処理する際に私が見つけた標準はありません。

私はカスタム参照型でこれを行いました:

{
    "id": 79,
    "name": "Bordeaux",
    "country": {
        "ref": {
            "id": 76,
            "uri": "/country/76"
        }
    },
    "year": "2005" }

ここにもいくつかの役立つアイデアがあります。

于 2012-10-09T18:22:36.160 に答える
-4

JSON は外部キーを持つために存在しません。それはRDBMSに関連するものです。私の意見では、JSON はそれ自体にネストされたすべてを表示する必要があります。

MongoDB はこの意見を補強します。MongoDB では、すべてを JSON として保存し、「FK」は同じドキュメントに含まれます。私の意見では、FK が必要な場合は、mongo も JSON も必要ありません。

ところで、常に国を表示する場合、常に 2 つのリクエストを行うのは意味がありませんac

于 2012-09-01T19:26:12.580 に答える