无法使用 SQL 从数据库中获取特定信息

Cannot get specific information from a database using SQL

这是我第一次在 'connection.query' 上发出两个 SQL 请求,有些地方肯定不对,首先是我的代码:

pool.getConnection(function (err, connection) {
    if (err) throw err;
    let sql = `SELECT * FROM custom_prefix WHERE guild_id = '12345678912345678'; SELECT * FROM cache_size`;
    connection.query(sql, async function (err, result) {
        if (err) throw err;
        console.log(result);
        connection.release();
    });
});

到目前为止一切正常,输出将是:

[
  [
    RowDataPacket {
      prefix: '!',
      guild_id: 12345678912345678,
      guild_name: 'server name',
      changed_by_id: 12345678912345678,
      changed_by_name: 'username#1234',
      changed_date: 2022-04-13T19:50:33.000Z
    }
  ],
  [ RowDataPacket { guilds: 4, users: 39 } ]
]

如果我将 console.log(result) 更改为 console.log(result[1]),输出将是:

[ RowDataPacket { guilds: 4, users: 39 } ]

所以一切都像我期望的那样工作,但是如果我只想要 result[1] 中的特定值,比如说 guilds,那么我会做 console.log(result[1].guilds)

我会这样做,因为我有一些其他文件,我在其中检查数据库中的某些内容并使用 result[0].something 方法,它在那里工作得非常好。但是一旦我使用两个 SELECT * FROM 请求,它就不会。

所以如果我尝试 console.log result[1].guilds 输出将是:

undefined

这对我来说毫无意义,因为我经常使用这种方法并且效果很好。 但是这里说 undefined.

所以我不知道如何在使用两个时从一个结果中获取特定值,希望这里有人可以帮助我。 谢谢。

通常,查询结果是一个行数组。但是,由于您执行了 多个 查询,因此 result 是查询结果的数组;每个结果都是每个查询返回的行数组。因此,您比只有一个查询的场景多了一层嵌套。

您正在尝试获取 .guilds 的数组,该数组没有这样的 属性。你想要这个:

result[1][0].guilds