【问题标题】:Call object inside RowDataPacket using Node.js and MySQL使用 Node.js 和 MySQL 在 RowDataPacket 中调用对象
【发布时间】:2018-08-15 03:14:17
【问题描述】:

代码:

con.query(`SET @row_num = 0; SELECT @row_num := @row_num + 1 AS row_number, userid, username, lvl FROM users ORDER BY lvl + 0 DESC`, async (err, rowss) => {
    if(err) throw err;
        console.log(rowss[0].userid);
    });

我尝试了什么:

我尝试使用rowss[0].useridrowss.userid。但非想为我工作。但是,当我单独使用rowss 时,我得到以下输出:

[ OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 10,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 },
[ RowDataPacket {
  row_number: 1,
  userid: '123',
  username: 'test1#5245',
  lvl: '113' },
RowDataPacket {
  row_number: 2,
  userid: '456',
  username: 'test2#8272',
  lvl: '112' },
RowDataPacket {
  row_number: 3,
  userid: '789',
  username: 'test3#5873',
  lvl: '91' },
RowDataPacket {
  row_number: 4,
  userid: '012',
  username: 'test4#0581',
  lvl: '78' }.................

我想要什么:

在 RowDataPacket 中调用一个对象并 console.log 它。 所以我想要的基本上是当我打字时:

console.log(rowss[0].username + ' - ' + rowss[0].lvl);
console.log(rowss[3].username + ' - ' + rowss[3].lvl);

表示输出结果是:

test1#5245 - 113 (Since this is the first row in the array).
test4#0581 - 78 (Since this is the 4th row).

我的问题:

例如,每当我尝试console.log(rowss[0].username); 时,我都会得到undefined。这适用于所有对象。所以userid,lvl等也是。

【问题讨论】:

    标签: mysql node.js node-mysql


    【解决方案1】:

    您在创建数据库连接时启用了多个语句为真。这会导致多个结果集

    multipleStatements: true

    下面的结果集是声明SET @row_num = 0;的响应

    OkPacket {
    fieldCount: 0,
    affectedRows: 0,
    insertId: 0,
    serverStatus: 10,
    warningCount: 0,
    message: '',
    protocol41: true,
    changedRows: 0 }
    

    选择查询的数据结果在数组的第二个位置可用
    选择查询数据可以访问如下

    rowss[1][0].row_number
    rowss[1][0].userid
    rowss[1][0].lvl
    

    【讨论】:

    • 谢谢,这行得通。但是,我对您的回答有一个问题。为什么是第二位[1] 而不是第一位[0]?不会是[0][0]吗?
    • 您正在单次执行中执行多个查询。您的 select 语句位于第二位置 [1],因此结果也在第二位置 [1]。设置行号被认为是单独的查询,它在第一个位置 [0]
    猜你喜欢
    • 2016-11-03
    • 2020-07-26
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2020-07-31
    • 2013-03-09
    • 2019-09-11
    相关资源
    最近更新 更多