Tengo una prueba de ciprés que se ha configurado con el módulo de nodo mysql. Cuando ejecuto la prueba mencionada a continuación, da la salida de la siguiente manera.
const executeQuery = (query) => { cy.task('DBQuery', query).then(function (recordset) { var rec = recordset cy.log(rec) }) }
Consulta:
select * from Users where email = 'sheeranlymited@lymitedtest.com'
SALIDA: registro [Objeto{23}]
Consulta:
select firstname from Users where email = 'sheeranlymited@lymitedtest.com'
SALIDA: registro [{nombre: Edward}]
en lugar de cy.log(rec)
, quiero obtener el resultado de 23 columnas para asignarlas a diferentes variables según el nombre de la columna.
Agradezco si alguien me puede ayudar a resolver esto...
Puede usar Object.values
en js para recuperar valores de su objeto
Digamos que necesita extraer el valor de la tercera columna, por lo que su código se verá así,
cy.task('DBQuery', query).then(function (recordset) { var rec = recordset const results = Object.values(rec[0]) // results[index of the column] will output the results cy.log(results[3]) })
Podemos hacer una pequeña modificación para facilitar su tarea,
cy.task('DBQuery', query).then(function (recordset) { var rec = recordset const Values = Object.values(rec[0]); const keys = Object.keys(rec[0]); let result = {}; let index = 0; keys.forEach(key => { result[keys[index]] = Values[index]; i++ }) //result.firstName will give you your results cy.log(result.firstName); })
De esta manera, estamos generando pares clave-valor que tienen la clave como nombre de columna. Entonces puede usar el nombre de la columna para encontrar el valor.
Espero que esto ayude.
salud.