gpt4 book ai didi

javascript - Node.JS MySQL 等待查询结果

转载 作者:行者123 更新时间:2023-12-05 04:53:02 24 4
gpt4 key购买 nike

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

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

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

<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
}

我一直在寻找有关该对象的文档,但找不到。我想这是一种 promise ,因为在收到结果之前返回查询对象:

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 对象是从哪里来的.

我知道我可以用类似的东西等待结果:

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

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

最佳答案

如果你使用 mysql2 包连接到数据库,你可以这样做:

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

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

关于javascript - Node.JS MySQL 等待查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66221378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com