Contentful JS: невозможно получить записи, сопоставив поле ссылки

Я использую Javascript API Contentful для создания проекта. В настоящее время у меня есть проблема, когда я получаю "неопределенный" в качестве возврата для следующего вызова.

const query = {
  content_type: "vehicle",
  include: 2,
  select: "fields",
  "fields.site.fields.siteName[match]": id
};

Я настроил "транспортное средство" в качестве модели, которая использует ссылку "сайт" с именами, адресами и так далее. Кажется, возможно использовать [существовать] на первом уровне, как

"fields.site[exists]": true

который работает, но неудовлетворительно для того, что мне нужно.

Что мне нужно, так это любые транспортные средства, принадлежащие названному сайту. Очевидно, что я обязательно добавил соответствующий контент, и я действительно могу видеть данные, опуская строку "fields.site.fields...". В целях безопасности у меня не было бы транспортных средств для других сайтов, отображаемых в ответе.

Я что-то пропустил? Повышение уровня "включить" тоже ничего не делает.

1 ответ

Решение

Я полагал, что вы не видели ни одного предложения в документах.

Во-вторых, fields.brand.sys.contentType.sys.id=sFzTZbSuM8coEwygeUYes, которые вы используете для фильтрации по полям записей из типа содержимого 2PqfXUJwE8qSYKuM0U6w8M.

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

Я быстро прототипировал ваш случай в Node.js.

const { createClient } = require('contentful');
const client = createClient({
  space: '...',
  accessToken: '...'
});

client.getEntries({
  content_type: 'vehicle',
  select: 'fields',
  // this is the line you're missing
  'fields.site.sys.contentType.sys.id': 'site',
  'fields.site.fields.siteName': 'vw-site'
}).then(({items}) => {
  console.log(items);
}).catch(e => console.log(e));

Вы можете найти подробный пример в документации

Надеюсь, это поможет:)

Другие вопросы по тегам