[英]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.