node.js - 将 Sequelize 查询中的数据保存为变量中的纯 JavaScript 对象?

标签 node.js express sequelize.js

我正在编写一个 Node API,并希望将 Sequelize 查询的结果保存在变量中,作为 findAll block 外部的纯 JavaScript 对象。我有一些有用的东西,但没有我想要的那么好。这是我所拥有的:

router.get('/', (req, res, next) => {

    models.User.findAll({
        attributes: ['id', 'name'],
        raw: true
    }).then(function (results) {

        console.log(results); // Plain JavaScript object, which is good

        // Do logic on results 

        //Return results
        res.status(200).json({
            results
        });
    });
});

但我真的不想将所有逻辑保留在 then() block 中,特别是因为我可能想在此查询之前或之后执行一些其他查询。我真的想要类似的东西(如果这是一件事):

router.get('/', (req, res, next) => {

    var users = models.User.findAll({
        attributes: ['id', 'name'],
        raw: true
    }).then(function (results) {            
        });
    });

    // Do logic on results

    // return results
    res.status(200).json({
        results
    });
});

我尝试将sequelize查询保存在router.get()调用下面的函数中,并在它们是JavaScript对象时返回结果,但这不起作用。我对 JavaScript 很陌生,所以我很感激你的建议。

最佳答案

好吧,如果您不希望逻辑代码位于 then block 中,您不妨使用 async-await:

router.get('/', async (req, res, next) => {

    var results = await models.User.findAll({
        attributes: ['id', 'name'],
        raw: true
    });

     // you've result variable available here, use it.
    // Do logic on results

    // return results
    res.status(200).json({
        results
    });
});

现在您不必在 then block 中编写代码,您可以直接在函数中使用变量 results

关于node.js - 将 Sequelize 查询中的数据保存为变量中的纯 JavaScript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691036/

相关文章:

javascript - NAPI 插件 : how to return value to javascript from c++ CALLBACK?

node.js - 错误: Cannot find module '../build/Debug/sqlclient'

node.js - 如何在 node js express 中使用 sequelize 从浏览器返回结果?

javascript - 在 Node request.headers 中设置权限

node.js - Sequelize 连接到 heroku postgres 数据库时卡住了

node.js - postgreSQL 表约束、sequelize 选项和 sequelize 验证之间的区别?

node.js - Docker 镜像构建但在浏览器中看不到

javascript - 尽管未兑现的 promise ,脚本还是结束了

javascript - Express4 在 POST 请求中返回错误

javascript - 无法读取 null + passport.js 的属性 'body'