Express 在mongoose.js中使用async/await

Express 在mongoose.js中使用async/await,express,mongoose,async-await,Express,Mongoose,Async Await,正在寻找使用async/await而不是使用嵌套回调方法重写这两个查询的帮助 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)

正在寻找使用async/await而不是使用嵌套回调方法重写这两个查询的帮助

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");
    };
};
给你

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)        
    }
}
如果你想在路由处理程序级别摆脱这些try/catch,你需要看看这篇文章

给你

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

如果你想在路由处理程序级别摆脱这些try/catch,你需要看看这篇文章

多谢各位。我要测试一下!非常感谢。我要测试一下!