Node.js 是否将Sequelize查询中的数据保存为变量中的普通JavaScript对象?

Node.js 是否将Sequelize查询中的数据保存为变量中的普通JavaScript对象?,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,我正在编写一个节点API,希望将Sequelize查询的结果保存在变量中,作为findAll块之外的普通JavaScript对象。我有一些有用的东西,但没有我想要的那么好。以下是我所拥有的: router.get('/', (req, res, next) => { models.User.findAll({ attributes: ['id', 'name'], raw: true }).then(function (results) {

我正在编写一个节点API,希望将Sequelize查询的结果保存在变量中,作为
findAll
块之外的普通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()
块中,特别是因为我可能想在这之前或之后执行一些其他查询。我真的想要这样的东西(如果这是一件事):


我试图将sequelize查询保存在
router.get()
调用下面的函数中,并在结果是JavaScript对象时返回结果,但没有成功。我对JavaScript非常陌生,所以我非常感谢您的建议

那么,如果您不希望逻辑代码出现在
then
块中,那么您最好使用
异步等待

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
    });
});

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

我的朋友非常简单,可以在检索数据的同一位置对结果进行逻辑处理,例如在我修改的代码中:

router.get('/', (req, res, next) => {
     var users = models.User.findAll({
            attributes: ['id', 'name'],
            raw: true
        }).then((results) => {            
            //here do you logic with results 
              //after
                res.status(200).json({data : result});
        }).catch(error => res.status(400).json({error}));
});

你可以使用async-await.Wow,太棒了!谢谢很乐意帮助配偶:))
router.get('/', (req, res, next) => {
     var users = models.User.findAll({
            attributes: ['id', 'name'],
            raw: true
        }).then((results) => {            
            //here do you logic with results 
              //after
                res.status(200).json({data : result});
        }).catch(error => res.status(400).json({error}));
});