我正在制作一个带有节点和打字稿的简单网站。 我安装了MySQL module与数据库进行通信。
我正在尝试从数据库获取数据,但是我不知道如何确定结果应具有的类型。例如,
const sql = `SELECT metaValue FROM ${this.table} WHERE metaKey = '${key}'`;
const result = await this.pool.query(sql);
console.log(result);
在这种情况下,结果为[ RowDataPacket { metaValue: 'map-79.jpg' } ]
。如何从结果中得到map-79.jpg
?结果应该是哪种类型?
答案 0 :(得分:2)
它将返回对象数组:
const sql = `SELECT metaValue FROM ${this.table} WHERE metaKey = '${key}'`;
const result = await this.pool.query(sql);
console.log(result);
result.forEach(row => {
console.log(row.metaValue)
})
或者您可以使用map
let imgArray = result.map(row => { return row.metaValue });
console.log(imgArray);
答案 1 :(得分:0)
@Pushpendra Kumar 是正确的。但是我们需要类型保护,然后再将结果用作数组,如下所示。
const sql = `SELECT metaValue FROM ${this.table} WHERE metaKey = '${key}'`;
let rows = await this.pool.query(sql);
if ( Array.isArray(rows) ) {
return rows[0].metaValue
}
答案 2 :(得分:0)
我使用let records: youDefinedInterface[] = [].slice.call(result, 0);
将查询类型转换为普通数组。