如何使用异步并等待节点js中的数据库中的选择

Styx25

到目前为止,我已经完成了一个使用回调的项目,但是在更大的代码库中,我已经陷入了混乱。我想继续学习一些新功能,特别是异步功能。

我使用的是oop模式,因此我希望将其直接实现到oop中。问题是,我以前从未做过,也不知道该怎么做。我有一些带有回调的基本代码。有人可以将其更改为异步功能吗?

server.js

const object = require("./object");

new object(userID).name((data) => {
  console.log(data);
});

object.js

module.exports = class{

  constructor(userID){
    this.id = userID;
  }

  name(callback){
    mysqli.query("SELECT meno FROM uzivatelia WHERE id='"+ this.id +"'", (err, user) => {
      callback(user[0].meno);
    });
  }

}
汤姆

返回一个显式的Promise,将其连接到mysqli回调模式中:

module.exports = class {

    constructor(userID) {
        this.id = userID;
    }

    name() {
        return new Promise((resolve, reject) => {
            mysqli.query(
                `SELECT meno FROM uzivatelia WHERE id = '${this.id}'`,
                (error, record) => error ? reject(error) : resolve(record)
            )
        })
    }

}

您也可以async在方法定义之前添加,但是我认为这不会产生任何影响-无论您是否使用声明了Promiseasync并调用代码都可以,该方法将变为异步await

const User = require('./user.js')

async testIt() {
    const myUser = new User(12345)
    const username = await myUser.name()
    console.log(username)
}

testIt()

几个一般性提示。首先,为使堆栈跟踪更清晰,您将要命名此类。

其次,可能值得您花时间研究一种解决方案,以全面取消mysqli调用的节点。如果还没有这样的东西,我会感到非常惊讶。如果不是这样,您可以轻松地构建一些小的东西来涵盖最需要的情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何实现异步任务以使用异步和等待从数据库中获取数据?

等待GWT异步调用中的数据库结果

节点JS异步数据库调用

如何使用节点 js 按数组中的第 n 项对 mongo 数据库进行排序?

进行异步等待数据库调用的发布请求未返回正确的结果。节点.js

如何使函数等待节点js中的异步函数解析?

使用节点中的异步等待从数据库响应构建数组

如何使用数据库中的数组选择mysql

异步并等待节点 js 中的 MySQL 调用

等待后端中的数据库在Node.js / Express中更新后,如何更新前端?

在节点7.4中使用异步/等待

图像未从节点JS中的数据库中删除

异步等待在端点中使用以从SQL数据库中获取结果时不起作用

提取JSON并将其存储在数据库中时,使用异步等待功能是否有任何价值?

如何从cytoscape.js中的mysql数据库中检索节点和元素?

如何从节点js中的数据库中自动删除jsonwebtoken

异步查询node.js中的数据库

在Node.js中处理异步数据库

如何从数据库中的 XML 列中删除节点

随机选择子节点后如何在Firebase Realtime数据库中获取子节点的密钥

如何在 Quarkus 中运行异步数据库任务

如何在.NET中异步查询数据库

如何使异步等待工作于调用数据库的函数

使用异步等待执行多个数据库查询

Dialogflow-使用异步/等待从数据库读取

如何使用数据库中的数据在下拉列表中设置默认选择和值?

在Express.js中,我们如何进行res.send以等待从数据库中获取数据

SQL数据库中的控制器异步/等待死锁

不要等待Django中异步视图中的数据库结果