web-dev-qa-db-fra.com

Strapi CMS: Fetch Contenu imbriqué

J'utilise Strapi CMS et luttant avec la récupération des données du contenu imbriqué/profond. E.g.: Disons, j'ai des types de contenu ci-dessous créés et les relations sont définies.

Personne: nom, âge

Adresse: Ville, Pays

Contact: Code, numéro

Personne a une adresse

L'adresse a de nombreux contacts

Maintenant, le problème est que lorsque j'accède à '/ personnes', je n'obtiens que le nom, l'âge et l'objet d'adresses. Mais l'objet d'adresse ne dispose pas des informations de contact associées à l'adresse.

Quelqu'un peut-il m'aider à résoudre ce problème ou de me diriger vers un tel article?

6
ivp

Tout d'abord, vous aurez besoin d'une fonction de contrôleur personnalisée pour cela. Dans /api/person/controllers/Person.js Vous pouvez exporter votre fonction de recherche personnalisée. Là, vous pouvez définir les champs que vous souhaitez peupler:

module.exports = {
  find: async (ctx) => {
    return strapi.query('person').find(ctx.query, ['address', 'contact']);
  },
};

Une autre solution fonctionne aussi pour moi:

module.exports = {
  find: async (ctx) => {
    return strapi.query('person').find(ctx.query, [
       { path: 'address' },
       { path: 'contact' },
    ]);
  },
};

Exemple édité avec un seul niveau de peuplez de plus en plus:

module.exports = {
  find: async (ctx) => {
    return strapi.query('person').find(ctx.query, [
      {
        path: 'address',
        populate: {
          path: 'contacts',
        },
      },
    ]);
  },
};

Pour référence, voir les documents bêta les plus récents:

https://strapi.io/documentation/3.0.0-beta.x/concepts/queries.html#api-reference

5
Roland Balogh