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.

Agregar fila especificada en exceljs de Node.js

Tengo una respuesta JSON como esta:

{
   "success": true,
   "message": "cargar datos yogithesymbian",
   "total_items": 74,
   "results": [
      {
         "id": 1,
         "created_at": "2021-12-23T02:41:00.000Z",
         "child": {
            "id": 1,
            "number": 2 // usaría esta columna en mi hoja de cálculo
         }
      }
   ]
}

Luego, mi código de columna sería:

let workbook = new excel.Workbook();
let worksheetDT = workbook.addWorksheet("tes");

worksheetDT.columns = [
   { header: "ID", key: "id", width: 25 }, // Esto funciona
   { header: "Número", key: "child.number", width: 25 } // ¿Cómo configurar el número?
];

He agregado el JSON de la siguiente manera (estoy usando Model.findAll()):

worksheetDT.addRows(...results);

Mi consulta:

var results = [];
await Model.findAll({
   include: [
      {
         model: child,
      },
   ],
}).then(async (result) => {
   results.push(result);
});

El campo de número siempre está en blanco, ¿cómo puedo saber qué clave usar para el campo de número?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para configurar la columna “Number” en el worksheetDT, debes cambiar la clave en worksheetDT.columns a "child.number" tal como lo hiciste. Sin embargo, dado que la columna “Number” está anidada dentro del objeto “child” en tu respuesta JSON, debes modificar tu consulta para incluir el objeto “child” para cada objeto padre.

    Para hacerlo, debes modificar la consulta Model.findAll() agregando la opción include de la siguiente manera:

    var results = [];
    await Model.findAll({
      include: [
        {
          model: Child, // Suponiendo que el nombre del modelo es Child, como se menciona en la respuesta JSON
        },
      ],
    }).then((result) => {
      results = result.map((r) => r.toJSON()); // Convertir instancia Sequelize en objeto JSON plano
    });
    

    Esto poblará el objeto “child” para cada objeto padre en el arreglo result. Luego, puedes agregar las filas al worksheetDT usando el siguiente código:

    worksheetDT.addRows(results.map((r) => ({ id: r.id, "child.number": r.child.number })));
    

    Aquí, estamos utilizando la función map() para extraer las propiedades “id” y “child.number” de cada objeto JSON en el arreglo results y luego pasando el arreglo resultante a la función worksheetDT.addRows().

    Esto debería completar la columna “Number” en tu hoja de cálculo de Excel con los valores correspondientes.

Comments are closed.