2

Contentful API (コンテンツ配信の npm モジュール)を介して何かをしようとしていますが、それが可能かどうかわかりません。

tagとも呼ばれる 1 つのフィールドを持つ Contentfulのコンテンツ タイプがありtagます。article次に、と呼ばれる複数の参照フィールドを持つ別のコンテンツ タイプがありtagsます。このフィールドにより、編集者は複数のタグ エントリを記事にリンクできます。

ユーザーが記事を読み込んだときに、タグを使用して同じタグを持つ他の記事を見つけて、同様の読みを表示したいと考えています。

したがって、関連する記事の JSON 構造は次のようになります。

{
  sys: {...},
  fields: {
    tags: [
      {
        sys: {...},
        fields: { tag: "Football" }
      },
      {
        sys: {...},
        fields: { tag: "Leeds United" }
      },
      {
        sys: {...},
        fields: { tag: "Elland Road" }
      }
    ]
  }
}

たとえば、ユーザーが読んでいる記事に と のタグが付いているfootballLeeds UnitedElland Roadます。API を使用して、これら 3 つのタグ、またはそれらのタグの一部を持つ他の記事を返すにはどうすればよいでしょうか。たとえば、3 つのタグすべてを持つ記事は強い一致ですが、一致するタグが 1 つだけの記事は弱いと言えます。

私は次のように包含ルールを使用してみました:

contentClient.entries({
  "content_type": "xxxxxxxx",
  "fields.tags[in]": ["football", "Leeds United"],
}, function(err, entries){
  if (err) throw err;
  console.log(entries);
});

fields.tags[in]の値を持つフィールドはそれではないため、これはもちろん機能しませんfields.tags.fields.tag

4

2 に答える 2

3

sys.id辞書を次のように変更することで、タグを特定し、それらに対してクエリを実行することで、包含クエリを実現できます。

{
  "content_type": "xxxxxxxx",
  "fields.tags.sys.id[in]": "tagId1, tagId2",
}

コンテンツ配信モジュールは配列をマーシャリングしないため、引数はコンマ区切りの文字列である必要があります。Content Delivery API はスコアリングをサポートしていないため、そのクエリを使用すると、これらのタグの 1 つ以上へのリンクを持つすべてのエントリのリストを取得できますが、強い一致または弱い一致によって並べ替えられることはありません。

于 2015-09-23T12:15:27.007 に答える