将赛普拉斯数据库查询输出对象获取到变量中

Get cypress database query output objects in to variables

我有一个用 mysql 节点模块设置的 cypress 测试。当我 运行 波纹管提到测试时,它给出的输出如下。

const executeQuery = (query) => {
    cy.task('DBQuery', query).then(function (recordset) {
        var rec = recordset
        cy.log(rec)
    })
}

查询:

select * 
from Users 
where email = 'sheeranlymited@lymitedtest.com'

输出:记录 [对象{23}]

查询:

select firstname 
from Users 
where email = 'sheeranlymited@lymitedtest.com'

输出:日志 [{firstname: Edward}]

而不是 cy.log(rec) 我想获取 23 列的输出以根据列名分配给不同的变量。

如果有人能帮我解决这个问题,我将不胜感激...

您可以在 js 中使用 Object.values 从您的对象中检索值

假设您需要提取第 3 列的值,那么您的代码将如下所示,

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])
})

我们可以做一些小修改,让您的任务更轻松,

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);
})

这样,我们就生成了以键为列名的键值对。所以你可以使用列名来查找值。

希望这对您有所帮助。

干杯。