【问题标题】:Save data from Sequelize query as a plain JavaScript object in a variable?将 Sequelize 查询中的数据保存为变量中的纯 JavaScript 对象?
【发布时间】:2019-01-12 10:24:51
【问题描述】:

我正在编写一个节点 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() 块中,尤其是因为我可能想在此之前或之后进行一些其他查询。我真的想要类似的东西(如果这是一件事):

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 很陌生,所以我很感激你的建议。

【问题讨论】:

  • 你可以使用异步等待。

标签: node.js express sequelize.js


【解决方案1】:

好吧,如果你不希望你的逻辑代码出现在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
    });
});

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

【讨论】:

  • 哇,完美!谢谢!
  • 很乐意帮助队友:))
【解决方案2】:

我的朋友很容易在你检索数据的地方对你的结果进行逻辑处理,例如在我修改的代码中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2014-10-08
    • 2023-03-15
    • 2021-03-01
    相关资源
    最近更新 更多