2016-12-07 4 views
0

私は、次のような状況に直面しています:オブジェクトのプロパティのプロパティを計算することは許可されていますか?

私はCommentオブジェクトへの多対多の関係を介して連結されPostオブジェクトを、持っています。 Postは、「Top」とマークされた最大値を2つの数字で表すことができます。

私はポストを一覧表示する機能を提供するAPIを公開する必要があります(ポストの詳細な表示も表示されますが、これは問題ありません)。

[{ 
    title: "Lorem ipsum", 
    .... 
    comments: [{ 
      "author": "...", 
      "comment": ".....", 
      "top": false 
     }, ... // repeat a few thousand times 
    ] 
},... 
] 

しかし、私はこのAPIの消費者の大半は後になるでしょうことを知っている:問題はPostComment秒の膨大な量を持つことができる、と私は自分自身がこの表現を表示する表示されていないということであり、しかし、私は計算し、ここで

[{ 
    title: "Lorem ipsum", 
    .... 
    topComments: [{ 
      "author": "...", 
      "comment": ".....", 
     }, .... // repeat once more if needed 
    ] 
},... 
] 

は私が/ポスト/ ID_OF_POST /コメントを介してアクセスすることができ、すべてのコメントを表示しないことを選択:ディスプレイに直接トップコメント(秒)ので、私はこの表現を暴露することを考えています「実行時」にtopCommentsプロパティ(コード内の元のオブジェクトにはありません)を挿入し、コメントを表示しますトップとしてマークされた

ビジネスロジックを使用して計算し、表現されたオブジェクトに存在しないプロパティを公開できますか?後で、新しいnumberOfComments計算されたプロパティを追加したいのですが、それでも問題はありませんか?

+1

はい、許可されているのは、「一時的」または「仮想」プロパティです。 –

+0

@See http:// stackoverflow。com/questions/22926254/add-custom-property-serialize-object –

+0

@MathieuDormevalこれを回答として投稿できますか?私はそれが完全に私が欲しいものに答えているので、それを受け入れることは非常にうれしいです! :) – Lucio

答えて

1

はい、それは、それが命名の「過渡」または「仮想」プロパティ許可されています。

Symfony Frameworkでは、thisのようにすることができます。

これが役立ちますように!

1

が、それはビジネスロジックそれはもちろん

使用して計算するために許可されているあなたの答えのために事前にありがとうございます。

表現されたオブジェクトに存在しないプロパティを公開しますか?

私は別の表現を返しが、トップコメントの収集リソースを取得するために、異なるリソースを使用することはありません。

GET /posts/{postId}/top-comments 

は、完全なリストと同じ形式でコメントの配列を返しますが、先頭のコメントだけが含まれます。

また、元のコレクションにフィルタを使用することができます。

GET /posts/{postId}/comments?top=true 
+0

しかし、一番上のコメントの配列はかなり小さいので(2つのオブジェクトが最大)、投稿リストの表現に直接含めることはできますか? – Lucio

+1

もちろん、どうしてですか? –

関連する問題