编辑:已回答问题。代码是正确的,只需要迭代结果或单独访问每个元素。
我正在用MySql写一个不和谐的机器人。在进行其他处理之前,我需要检查一个表中是否存在该用户。主体(此处未显示)建立连接并收集用户命令,调用适当的模块。在这种情况下,args将具有搜索表的值。promise和await行的时间似乎是正确的,因为"Results“是在testUser返回后打印的。但是,结果返回的是对象对象而不是行(表不为空)。函数中的resolve( rows )不应该返回选定的行吗?如果没有必要,我会尽量避免添加额外的模块。
const discord = require("discord.js");
const mySql = require("mysql");
module.exports.run = async (bot, message, args, conn) => {
const results = await testUser(args[0], conn);
console.log("Results: " + results);
}
function testUser(userName, conn) {
return new Promise((resolve, reject) => {
conn.query(`SELECT * FROM user_master WHERE user_name =
'${userName}'`, (err, rows) => {
if(err) reject(err);
else resolve(rows);
});
});
}发布于 2019-03-02 16:38:27
返回的Object包含查询结果,可以像注释中提到的那样进行查询。举一个完整的例子,这是你的代码,包括循环返回的结果:
const discord = require("discord.js");
const mySql = require("mysql");
module.exports.run = async (bot, message, args, conn) => {
const results = await testUser(args[0], conn);
results.forEach((row) => {
console.log(row);
});
}
function testUser(userName, conn) {
return new Promise((resolve, reject) => {
conn.query(`SELECT * FROM user_master WHERE user_name =
'${userName}'`, (err, rows) => {
if(err) reject(err);
else resolve(rows);
});
});
}https://stackoverflow.com/questions/54944300
复制相似问题