繁体   English   中英

Node.JS MySQL 等待查询结果

[英]Node.JS MySQL waiting for query results

我想做一个function向MySQL查询数据,等待结果。

const results = await message.client.db.query("SELECT * FROM TABLE WHERE condition");
console.log(results);   

我的问题是结果不包含我期望的原始数据,而是查询 object:

<ref *1> Query {
  _events: [Object: null prototype] {
    error: [Function (anonymous)],
    packet: [Function (anonymous)],
    timeout: [Function (anonymous)],
    end: [Function (anonymous)]
  },
  _eventsCount: 4,
  _maxListeners: undefined,
  _callback: [Function (anonymous)],
...
    _connectCalled: true,
    state: 'authenticated',
    threadId: 27,
    [Symbol(kCapture)]: false
  },
  [Symbol(kCapture)]: false
}

我一直在寻找关于 Object 的文档,但找不到。 我想它是一种 Promise,因为在收到结果之前返回查询 object:

console.log("1 - Before Query");
const results = await message.client.db.query("SELECT * FROM TABLE WHERE condition", async function (err, result, fields) {
    if (err) throw err;
    console.log("2 - Query result : ");
    console.log(result);
});
console.log("3 - After Query");
console.log(results);   

OUTPUT : 
1 - Before Query
3 - After Query
<The Query Object>
2 - Query result : 
<An array with my data>

我见过很多例子,人们使用await connection.query("...")来等待结果,但我不明白这个 Query object 是从哪里来的。

我知道我可以用类似的方式等待结果:

    message.client.db.query("SELECT * FROM TABLE WHERE condition", async function (err, result, fields) {
        if (err) throw err;
        do_something(result);
    });

但我首先发现它真的很重,当你做很多请求时很难使用。 我还需要一个从数据库返回值的异步 function,并且由于await connection.query("...")等不及结果,我不知道该怎么做。

如果您使用 mysql2 package 连接到数据库,您可以执行以下操作:

await con1.promise().query("your query here")
    .then( ([rows,fields]) => {
        your var = rows[0]['field1'];
        return nome_completo;
    })
    .catch(console.log)

其中 con1 是您定义的连接。 使用 promise() 您可以承诺您的查询,因此您可以使用 await

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM