ODataにフィルタ条件の一部のコンポーネントが欠落しているのに対して、クエリのコンポーネントIdも提供するとうまく機能するのはなぜですか?


1

ODataを介して公開されているコンポーネントがほとんど表示されないという問題に直面しています。

私は以下のクエリヒット時:

http://www-server.com/cd_webservice/odata.svc/ComponentPresentations? $filter=(TemplateId eq 111) and (PublicationId eq 22) 

私は、多くのコンポーネントとの結果を得たが、コンポーネント「555:

http://www-server.com/cd_webservice/odata.svc/ComponentPresentations?$ filter=(TemplateId eq 111) and (PublicationId eq 22) and (ComponentId eq 555) 

を、私は以下のクエリを打ったときのに対し、私は、期待される出力を得ます"それは奇妙なそれから行方不明だった。

指定された結果からコンポーネント(「444」など)を公開しないようにして、ページ「&」をリフレッシュして、コンポーネント「444」が結果から消えたので、クエリがキャッシュされていないことが明らかです。

コンポーネント "444"を再パブリッシュすると結果に表示され始めますが、同じコンポーネントのコピーを作成したときに "444-Copy"と表示され、発行されました。

この動作の原因がわからない場合は、どんなヘルプも高く評価されます。

ありがとうございます。

4

おそらく問題はクエリの結果の数です。結果の数は25に制限されていることがcd_webservice_conf.xml

<OData> 
  <DefaultTop>25</DefaultTop> 
  <FixedPublicationId>1</FixedPublicationId> 
</OData> 

に設定されているよう

デフォルトでは、あなたはこの番号を変更したり、コンポーネントを最大にしようとする結果をソートしてみてくださいこれを確認する最初の結果。

この回答についての@Nunoの発言を含めると、odataクエリ文字列にメタのtopを追加して結果の数を設定したり、すべての結果を得ることができます。 &$top=xx

+2

また、リクエスト自体に&top = Xのような最大値を指定することもできます。 0を使用して「無制限」を指定してください 29 8月. 172017-08-29 08:59:01

  0

ありがとうございます!設定とテストを変更するには時間がかかりますが、クエリを修正しようとしましたが、同じ数の結果が得られましたが、Broker DBの数が260であることがわかりました。 http://www-server.com/cd_webservice/odata.svc/ComponentPresentations?$filter=(TemplateId eq 111)and(PublicationId eq 333)&top = 0 また$ topで試してみました= 0; $ top = 300 しかし成功はありません。 29 8月. 172017-08-29 10:42:39

  0

あなたは試しましたか?$ top = 0 29 8月. 172017-08-29 13:07:16

  0

ちょうど今試しました(&$ top = 0、スペースなし)。ありがとう、ヌノとラウル!! 29 8月. 172017-08-29 13:52:08