首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sequelize未返回queryAsync对象

Sequelize未返回queryAsync对象
EN

Stack Overflow用户
提问于 2019-06-24 01:33:58
回答 1查看 394关注 0票数 2

我正在使用异步await.So构建nodejs api,我的控制器每个函数都是异步的,它通过模型接收承诺。对于查询,我使用了sequelize包来与数据库交互。为了使用sequelize async query behaviour,我选择了promisfy的bluebird插件。

代码语言:javascript
运行
复制
Promise.promisifyAll(sequelize)

在我的模型中,我编写了一个返回数据的方法,但是当我调用sequelize.query时,它将返回数据,但是当我编写sequelize.queryAsync时,它不应该返回数据。当我打印sequelize对象时,函数是存在的。我想知道如何获取queryAsync数据。

代码语言:javascript
运行
复制
LeadModel.getActiveRecords = function () {
  return new Promise(async (resolve, reject) => {
    try {
      let output = await LeadModel.sequelize.queryAsync("SELECT * FROM some_tbl where status = '1'")
      // This below query is working fine without queryAsync
      //let output = await LeadModel.sequelize.query("SELECT * FROM some_tbl where status = '1'")
      resolve(output)
    } catch (e) {
      reject(e)
    }d
  })
}

在控制器中,我以这种方式使用。

代码语言:javascript
运行
复制
LeadController.getlead = async function(req, res) {
    try {
        let datanew = await LeadModel.getActiveRecords();
        console.log(datanew);
    } catch (e) {
        throw e;
    }
}

你能帮我解释一下为什么序列化没有返回异步查询结果吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-25 05:09:14

你所做的是完全没有必要的。您返回的是一个包装了异步函数的新promise (异步函数总是返回promise,这就是它们的工作方式)。在该函数中,您将调用sequelize query方法,该方法已经返回了promise。

此外,在sequelize上使用promisifyAll是完全没有必要的,也是多余的,因为sequelize已经是异步的,并且你可以将大多数方法与async/await一起使用。

这将做与您正在做的完全相同的事情:

代码语言:javascript
运行
复制
LeadModel.getActiveRecords = function() {
    return LeadModel.sequelize.query("SELECT * FROM some_tbl where status = '1'");
}

// Or you can do it in a single line
LeadModel.getActiveRecords = () => LeadModel.sequelize.query("SELECT * FROM some_tbl where status = '1'");

并在控制器中使用它:

代码语言:javascript
运行
复制
LeadController.getlead = async function(req, res, next) {
    try {
        let datanew = await LeadModel.getActiveRecords();
        console.log(datanew);
    } catch (e) {
        console.log(e);
        return next(err);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56726324

复制
相关文章

相似问题

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