代码之家  ›  专栏  ›  技术社区  ›  Ok-Order9282

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

  •  0
  • Ok-Order9282  · 技术社区  · 3 年前

    这是我第一次在on连接中发出两个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 但事实并非如此。

    所以如果我试着安慰。记录 result[1].guilds 输出将是:

    undefined
    

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

    所以当使用两个结果时,我不知道如何从其中一个结果中获得特定值,我希望这里的人能帮助我。 谢谢

    1 回复  |  直到 3 年前
        1
  •  0
  •   Amadan    3 年前

    通常,查询结果是一个行数组。但是自从你表演了 倍数 询问, result 是查询结果的数组;每个结果都是每个查询返回的行数组。因此,与只有一个查询的场景相比,您的嵌套级别多了一个级别。

    你是想 .guilds 一个数组,它没有这样的属性。你想要这个:

    result[1][0].guilds