【问题标题】:How to use mysql in node with Typescript如何在带有 Typescript 的节点中使用 mysql
【发布时间】:2019-10-19 22:44:45
【问题描述】:

背景

我正在使用节点和打字稿制作一个简单的网站。 我安装了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?结果应该是什么类型?

【问题讨论】:

    标签: mysql node.js typescript


    【解决方案1】:

    我使用let records: youDefinedInterface[] = [].slice.call(result, 0); 将查询类型转换为普通数组。

    【讨论】:

      【解决方案2】:

      @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
      }
      

      【讨论】:

        【解决方案3】:

        它将返回对象数组:

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

        【讨论】:

        • 返回查询类型。我不能使用 foreach 或 map,因为它不是 Array 类型。
        猜你喜欢
        • 2018-08-27
        • 1970-01-01
        • 2014-06-07
        • 2017-06-19
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2014-06-26
        • 2022-01-06
        相关资源
        最近更新 更多