【问题标题】:Using async / await with mongoose.js将 async / await 与 mongoose.js 一起使用
【发布时间】:2018-09-12 07:37:58
【问题描述】:

寻求帮助以使用 async / await 而不是使用嵌套回调方法重写这 2 个查询。

exports.post_edit_get = function(req, res, next) {
    var id = req.params.id;
    if (mongoose.Types.ObjectId.isValid(id)){
        POST.findById(id, function (err, doc){
            if (err) { return next(err); }
            playerQuery.exec(function (err, players){
                if (err) { return next(err); }
                res.render('posts/posts_admin', { title: pageTitle, formData: doc, players: players });
            });
        });
    }else{
        res.send("Invalid ID");
    };
};

【问题讨论】:

    标签: express mongoose async-await


    【解决方案1】:

    给你

    const { isValid } = mongoose.Types.ObjectId
    
    exports.post_edit_get = async function(req, res, next) {
        var { id } = req.params;
    
        if (!isValid(id)){
            return res.send("Invalid ID");        
        }
    
        try {
            const post = await POST.findById(id)
            const players = await playerQuery.exec()
    
            res.render('posts/posts_admin', { 
                title: pageTitle, 
                formData: doc, 
                players: players 
            })
        } catch (err) {
            return next(err)        
        }
    }
    

    如果您想在路由处理程序级别摆脱这些尝试/捕获,您需要查看这篇文章; Using async/await to write cleaner route handlers

    【讨论】:

    • 谢谢。我会测试一下!
    猜你喜欢
    • 2017-11-05
    • 2019-04-15
    • 2014-06-19
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多