【发布时间】:2019-05-21 13:23:20
【问题描述】:
我正在尝试为快速回调函数 displayUsers() 编写一个包装器,在这种情况下,它会附加错误处理逻辑以避免在任何地方使用 try catch。
主要问题是 fn() 在被 router.get 调用之前实际执行 我不知道为什么我在函数中返回它,而不是执行它。
///Userroute.js
var router = require('express').Router();
var userModel = require('../models/user');
var asyncErrorHandler = require('../helpers/asyncErrorHandler');
var viewsDir = '../views/';
// get users from model
var displayUsers = async function(req, res, next) {
var users = await userModel.getUsers();
console.log(users);
res.render(`${viewsDir}/users.hbs`, {users:users})
};
var safeDisplayUsersfn = asyncErrorHandler(displayUsers);
router.get('/', safeDisplayUsersfn);
//asyncErrorHandler.js
module.exports = function (fn) {
return async function(req, res) {
try{
await fn();
}catch(error){
console.log('Error happened' + error);
res.status(500).send('Unexpected Error');
}finally{
}
}
}
【问题讨论】:
标签: javascript node.js express async-await