首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从带有promise/resolve和async/await的函数返回MySql结果

从带有promise/resolve和async/await的函数返回MySql结果
EN

Stack Overflow用户
提问于 2019-03-01 20:04:06
回答 1查看 42关注 0票数 0

编辑:已回答问题。代码是正确的,只需要迭代结果或单独访问每个元素。

我正在用MySql写一个不和谐的机器人。在进行其他处理之前,我需要检查一个表中是否存在该用户。主体(此处未显示)建立连接并收集用户命令,调用适当的模块。在这种情况下,args将具有搜索表的值。promise和await行的时间似乎是正确的,因为"Results“是在testUser返回后打印的。但是,结果返回的是对象对象而不是行(表不为空)。函数中的resolve( rows )不应该返回选定的行吗?如果没有必要,我会尽量避免添加额外的模块。

代码语言:javascript
运行
复制
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);
        });
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-02 16:38:27

返回的Object包含查询结果,可以像注释中提到的那样进行查询。举一个完整的例子,这是你的代码,包括循环返回的结果:

代码语言:javascript
运行
复制
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);
        });
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54944300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档