es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

API de colecciones eleventy: añadir colecciones dinámicamente.

Quiero crear colecciones dinámicamente en 11ty.js, para eso tengo un bloque de código como este:

eleventyConfig.addCollection("myGithub", (collection) => {
    const result = collection.getAll()[0].data.myGithub;
    const tags = collection.getAll()[0].data.myGithub.tags;
    tags.forEach(tag => {
      console.log('hello');
      eleventyConfig.addCollection(`tag${tag}`, (collection) => {
        const repos = collection.getAll()[0].data.myGithub.repos;
        console.log('hello');
        return repos.filter(repo => {
          return repo.data.tags.includes(tag);
        });
      });
    });

    console.log(Object.keys(collection.getAll()[0].data.collections));

    return result;
});

Pero parece que salta la inner eleventyConfig.addCollection ya que no veo esas declaraciones de console.log, y me pregunto si algo en 11ty me está impidiendo hacer esto. Si no es así, ¿qué estoy haciendo mal?

No siempre, pero a veces también obtengo un error como:

UserConfigError: config.addCollection(HTML) already exists. Try a different name for your collection.
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el nombre de las colecciones. El mensaje de error “config.addCollection(HTML) ya existe” sugiere que ya hay una colección con el nombre “HTML”, por lo que debes usar un nombre diferente para tu colección.

    En cuanto al eleventyConfig.addCollection interno que no funciona, es difícil decirlo sin más contexto. Sin embargo, algunos problemas comunes que podrían causar esto son:

    • El array de etiquetas podría estar vacío, por lo que el bucle no se ejecuta.
    • El array de repos podría estar vacío, por lo que el método de filtro no devuelve nada.
    • La variable collection podría no ser lo que esperas, por lo que no obtienes los datos que necesitas.

    Para solucionar el problema, puedes intentar agregar declaraciones console.log para ver dónde se detiene el código o qué valores estás obteniendo de los datos. También puedes intentar simplificar el código para aislar el problema y agregar gradualmente complejidad hasta encontrar el problema.

Comments are closed.