Nodejs mysql查询返回奇怪的结果而不是记录

Nodejs mysql查询返回奇怪的结果而不是记录,mysql,node.js,Mysql,Node.js,我正在为nodejs异步等待使用mysql2模块。 我的查询设置如下 var mysql = require('mysql2/promise'); const bluebird = require('bluebird'); static async insert (values_array){ const connection =await mysql.createConnection({ host: process.env.DB_HOST,

我正在为nodejs异步等待使用mysql2模块。 我的查询设置如下

var mysql = require('mysql2/promise');
const bluebird = require('bluebird');

static async insert (values_array){

  const connection =await mysql.createConnection({
                    host: process.env.DB_HOST,
                    user: process.env.DB_USERNAME,
                    password : process.env.DB_PASSWORD,
                    database: process.env.DB_NAME,
                    Promise: bluebird
                });
                connection.on('error', function (err) {
                    error = err;
                    console.log('ERROR => ' + err);
                });
                await connection.connect()
                var table=this.table_name

                try {
                    const query = "SELECT * FROM `" + table + "` WHERE `status` = 'pending'";
                    const rows = await connection.query(query);
                    console.log( rows);
                } catch (err) {
                    console.log('ERROR => ' + err);

                } finally {
                    connection.end();
                }

}

[
  [],
  [
    ColumnDefinition {
      _buf: <Buffer 01 00 00 01 08 2c 00 00 02 03 64 65 66 08 77 61 6c 6c 65 74 64 62 05 75 73 65 72 73 05 75 73 65 72 73 02 69 64 02 69 64 0c 3f 00 14 00 00 00 08 0
3 42 ... 433 more bytes>,
      _clientEncoding: 'utf8',
      _catalogLength: 3,
      _catalogStart: 10,
      _schemaLength: 8,
      _schemaStart: 14,
      _tableLength: 5,
      _tableStart: 23,
      _orgTableLength: 5,
      _orgTableStart: 29,
      _orgNameLength: 2,
      _orgNameStart: 38,
      characterSet: 63,
      encoding: 'binary',
      name: 'id',
      columnLength: 20,
      columnType: 8,
      flags: 16899,
      decimals: 0
    },
.....

在这里,我希望变量row将结果包含在一行或一个对象中,我可以通过循环使用该行或对象,或者作为JSON返回到前端。但我得到的是

var mysql = require('mysql2/promise');
const bluebird = require('bluebird');

static async insert (values_array){

  const connection =await mysql.createConnection({
                    host: process.env.DB_HOST,
                    user: process.env.DB_USERNAME,
                    password : process.env.DB_PASSWORD,
                    database: process.env.DB_NAME,
                    Promise: bluebird
                });
                connection.on('error', function (err) {
                    error = err;
                    console.log('ERROR => ' + err);
                });
                await connection.connect()
                var table=this.table_name

                try {
                    const query = "SELECT * FROM `" + table + "` WHERE `status` = 'pending'";
                    const rows = await connection.query(query);
                    console.log( rows);
                } catch (err) {
                    console.log('ERROR => ' + err);

                } finally {
                    connection.end();
                }

}

[
  [],
  [
    ColumnDefinition {
      _buf: <Buffer 01 00 00 01 08 2c 00 00 02 03 64 65 66 08 77 61 6c 6c 65 74 64 62 05 75 73 65 72 73 05 75 73 65 72 73 02 69 64 02 69 64 0c 3f 00 14 00 00 00 08 0
3 42 ... 433 more bytes>,
      _clientEncoding: 'utf8',
      _catalogLength: 3,
      _catalogStart: 10,
      _schemaLength: 8,
      _schemaStart: 14,
      _tableLength: 5,
      _tableStart: 23,
      _orgTableLength: 5,
      _orgTableStart: 29,
      _orgNameLength: 2,
      _orgNameStart: 38,
      characterSet: 63,
      encoding: 'binary',
      name: 'id',
      columnLength: 20,
      columnType: 8,
      flags: 16899,
      decimals: 0
    },
.....

[
[],
[
列定义{
_buf:,
_客户编码:“utf8”,
_目录长度:3,
_开始时间:10,
_方案长度:8,
_方案开始:14,
_桌长:5,
_表开始:23,
_长度:5,
_起始日期:29,
_orgNameLength:2,
_orgNameStart:38,
字符集:63,
编码:“二进制”,
名称:“id”,
柱长:20,
栏目类型:8,
国旗:16899,
小数:0
},
.....
返回的数组中有许多列定义对象。我在google上搜索,但什么也没有找到。或者我只是不知道如何在google上搜索

如何从数据库中删除记录


注意:MySQL节点模块也是如此。

来自
mysql2
query
函数返回一个包含两个数组、行和字段(也称为列)的数组。您看到的实际上是一个空结果集(注意第一个数组是空的)然后是一长串列定义,这些定义对您没有用处。相反,请尝试对返回的数组进行分解,以获得所需的内容:

const [rows] = await connection.query(query);

mysql2
中的
query
函数返回一个包含两个数组、行和字段(也称为列)的数组。您看到的实际上是一个空结果集(注意第一个数组是空的)然后是一长串列定义,这些定义对您没有用处。相反,请尝试对返回的数组进行分解,以获得所需的内容:

const [rows] = await connection.query(query);

我相信代码没有问题,但可能存在查询问题,因为您在双引号(“)中编写了查询

你的问题

const query = "SELECT * FROM `" + table + "` WHERE `status` = 'pending'";
我建议您用反勾选替换

 const query = `SELECT * FROM  ${table}  WHERE status = 'pending' `;

注意:确保数据库中存在针对查询的数据

我认为代码没有问题,但可能存在查询问题,因为您在双引号(“)内编写了查询

你的问题

const query = "SELECT * FROM `" + table + "` WHERE `status` = 'pending'";
我建议您用反勾选替换

 const query = `SELECT * FROM  ${table}  WHERE status = 'pending' `;

注意:确保数据库中有查询数据

非常感谢。它解决了我的问题,节省了我大量的时间。Noob me花了两天时间试图解决这个问题。@Nadir很高兴我能提供帮助!作为提示,如果有疑问,请返回文档,查看是否有任何示例符合您的要求,然后查看您正在做的事情无动于衷。在这种情况下,就是我引用的例子。非常感谢。它解决了我的问题,节省了我很多时间。Noob me花了两天时间试图解决这个问题。@Nadir很高兴我能帮上忙!作为一个提示,当有疑问时,回到文档中,看看是否有任何例子符合你的要求,然后看看你有什么不同的做法。在这里这是我引用的例子。