将 Sequelize 查询中的数据保存为变量中的普通 JavaScript 对象?

kro*_*761 5 node.js express sequelize.js

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

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
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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
    });
});
Run Code Online (Sandbox Code Playgroud)

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

Dak*_*ani 2

好吧,如果您不想在then块中添加逻辑代码,您也可以使用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
    });
});
Run Code Online (Sandbox Code Playgroud)

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