Нет реляционных полей в ответе Strapi v4

#javascript #strapi

#javascript #strapi

Вопрос:

У меня проблема, когда ни одно из реляционных полей не присутствует в ответах после извлечения моих данных. Когда я смотрю на схему одной из моих схем с отношением, я вижу, что реляционные поля присутствуют в объекте attributes . Но все же я получаю только нереляционные поля в своем ответе.

Это одна из моих схем

 {
  "kind": "collectionType",
  "collectionName": "activities",
  "info": {
    "singularName": "activity",
    "pluralName": "activities",
    "displayName": "activity"
  },
  "options": {
    "draftAndPublish": true
  },
  "pluginOptions": {},
  "attributes": {
    "name": {
      "type": "string"
    },
    "date": {
      "type": "date"
    },
    "subcategory": {
      "type": "relation",
      "relation": "oneToOne",
      "target": "api::subcategory.subcategory"
    },
    "members": {
      "type": "relation",
      "relation": "manyToMany",
      "target": "api::member.member",
      "inversedBy": "activities"
    }
  }
}
 

Ответ №1:

Strapi v4 Отношения In не заполняются при выборке записей по умолчанию.

Объяснение:

Запросы могут принимать populate параметр, чтобы явно определить, какие поля заполнять, со следующим синтаксисом:

GET /api/:pluralApiId?populate=field1,field2

Пример запроса: получить книги и заполнить отношения именем и адресом автора

GET /api/books?populate=author.name,author.address

Для удобства можно использовать подстановочный знак * для заполнения всех отношений первого уровня:

Пример запроса: получить все книги и заполнить все их отношения первого уровня

GET /api/books?populate=*

Пример запроса: получить все книги и заполнить их авторами и всеми их отношениями

GET /api/books?populate[author]=*

Примечание: только отношения первого уровня заполняются с populate=*. использованием синтаксиса скобок LHS (т.Е. [populate]=* ) Для заполнения глубже:

Пример запроса: получить все отношения, вложенные внутри компонента «навигация» в «глобальном» единственном типе

GET /api/global?populate[navigation][populate]=*

Решение:

Измените URL-адрес вашего API на один из следующих, и вы сможете увидеть соответствующие поля, заполненные в ответе.

GET /api/activities?populate=subcategory,members

или

GET /api/activities?populate=*

Ссылка: