2015-09-22 2 views
0

Я пытаюсь что-то сделать через Contentful API (npm module of the content delivery), и я не уверен, что это возможно.Контентный API-запрос для массива

У меня есть тип контента tag в Contentful, который имеет 1 поле, также называемое tag. Затем у меня есть другой тип контента, называемый article, который имеет множественное ссылочное поле под названием tags. Это поле позволяет редактору связать несколько записей тегов с этой статьей.

Теперь, когда пользователь загружает статью, я хочу показать подобное чтение, используя теги, чтобы найти другие статьи с одинаковыми тегами.

Так соответствующая JSON структура статьи выглядит следующим образом:

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

Так сказать, статья пользователь читает имеет метки football, Leeds United и Elland Road. Как использовать API для возврата других статей с этими тэгами или некоторыми из этих тегов. Например, статья со всеми тремя тегами будет сильным совпадением, но статья с одним совпадающим тегом будет слабой.

Я попытался с помощью правила включения так:

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.

ответ

1

Вы можете достичь запроса включения путем определения sys.id из тегов, а затем делает запрос для них, изменив свой словарь к этому:

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

модуль доставки контента не массивы Маршалловых , поэтому аргумент должен быть разделен запятой. API доставки контента не поддерживает подсчет очков, поэтому, используя этот запрос, вы просто получите список всех записей, которые имеют ссылку на один или несколько из этих тегов, но он не будет сортироваться по сильным/слабым совпадениям в любом случае.

+0

спасибо !!!! Я пытался сделать это в течение 2 дней. Их документация неверна! https://github.com/contentful/contentful.js Они говорят вам использовать там массив. – Coop

+0

Можете ли вы указать эквивалентный http-запрос для этого @NeoNacho –