changes regarding error handling
This commit is contained in:
20
src/app.js
20
src/app.js
@@ -138,19 +138,29 @@ app.use(require("./routes/eventlineup").router)
|
|||||||
app.use(require("./routes/eventsheet").router)
|
app.use(require("./routes/eventsheet").router)
|
||||||
// app.use("/", indexRouter.team_router);
|
// app.use("/", indexRouter.team_router);
|
||||||
|
|
||||||
// catch 404 and forward to error handler
|
|
||||||
app.use(function (req, res, next) {
|
|
||||||
next(createError(404));
|
|
||||||
});
|
|
||||||
|
|
||||||
// error handler
|
// error handler
|
||||||
app.use(function (err, req, res, next) {
|
app.use(function (err, req, res, next) {
|
||||||
// set locals, only providing error in development
|
// set locals, only providing error in development
|
||||||
|
if (err) {
|
||||||
res.locals.message = err.message;
|
res.locals.message = err.message;
|
||||||
res.locals.error = req.app.get("env") === "development" ? err : {};
|
res.locals.error = req.app.get("env") === "development" ? err : {};
|
||||||
|
if (typeof err === 'string' || err instanceof String) {
|
||||||
|
err = {
|
||||||
|
message: err
|
||||||
|
}
|
||||||
|
}
|
||||||
console.log("error:", err);
|
console.log("error:", err);
|
||||||
// render the error page
|
// render the error page
|
||||||
res.status(err.status || 500).render("error", { title:"Error", layout: req.layout, message: err.message });
|
res.status(err.status || 500).render("error", { title:"Error", layout: req.layout, message: err.message });
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// catch 404 and forward to error handler
|
||||||
|
// app.use(function (req, res, next) {
|
||||||
|
// next(createError(404));
|
||||||
|
// });
|
||||||
|
|
||||||
module.exports = {app};
|
module.exports = {app};
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
tsUtils = require("../lib/utils");
|
tsUtils = require("../lib/utils");
|
||||||
const path = require('path')
|
const path = require('path');
|
||||||
|
const { teamsnapFailure, tsPromise } = require("../lib/utils");
|
||||||
|
|
||||||
|
|
||||||
exports.helpers = {
|
exports.helpers = {
|
||||||
@@ -23,7 +24,7 @@ exports.getEvents = async (req, res, next) => {
|
|||||||
const {user, team, layout} = req
|
const {user, team, layout} = req
|
||||||
const bulkLoadTypes = ["event", "availabilitySummary"]
|
const bulkLoadTypes = ["event", "availabilitySummary"]
|
||||||
req.promises.push(
|
req.promises.push(
|
||||||
teamsnap.bulkLoad(team.id, bulkLoadTypes , () => {tsUtils.teamsnapCallback;req.items = tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team.id, req)})
|
tsPromise('bulkLoad', {teamId: team.id, types: bulkLoadTypes})
|
||||||
.then(items=>tsUtils.groupTeamsnapItems(items))
|
.then(items=>tsUtils.groupTeamsnapItems(items))
|
||||||
.then(items=>{
|
.then(items=>{
|
||||||
items.events.forEach((event) => {
|
items.events.forEach((event) => {
|
||||||
@@ -31,16 +32,25 @@ exports.getEvents = async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
req.events = items.events;
|
req.events = items.events;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
.then(tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team.id, req))
|
||||||
|
.catch((err) => {
|
||||||
|
teamsnapFailure(err,next)
|
||||||
|
})
|
||||||
)
|
)
|
||||||
await Promise.all(req.promises)
|
await Promise.all(req.promises)
|
||||||
const context = {
|
|
||||||
title: "Events",
|
try {
|
||||||
user, team, layout,
|
const context = {
|
||||||
events: req.events,
|
title: "Events",
|
||||||
};
|
user, team, layout,
|
||||||
res.render("event/list", context);
|
events: req.events,
|
||||||
|
};
|
||||||
|
res.render("event/list", context);
|
||||||
|
} catch(e) {
|
||||||
|
next(e)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.getEvent = async (req, res, next) => {
|
exports.getEvent = async (req, res, next) => {
|
||||||
|
|||||||
@@ -5,9 +5,12 @@ exports.partials = path.join(__dirname, "../views/eventsheet/partials")
|
|||||||
|
|
||||||
exports.getEventSheet = async (req,res) =>{
|
exports.getEventSheet = async (req,res) =>{
|
||||||
req.promises.push(
|
req.promises.push(
|
||||||
teamsnap.loadOpponents(req.team.id, (err, opponents)=>{
|
teamsnap.loadOpponents(
|
||||||
|
req.team.id,
|
||||||
|
(err, opponents)=>{
|
||||||
if (err) console.log("error in route/opponent.js", err);
|
if (err) console.log("error in route/opponent.js", err);
|
||||||
}).then(opponents => {req.opponent=opponents.find(o=>o.id==req.event.opponentId);})
|
}
|
||||||
|
).then(opponents => {req.opponent=opponents.find(o=>o.id==req.event.opponentId);})
|
||||||
)
|
)
|
||||||
await Promise.all(req.promises)
|
await Promise.all(req.promises)
|
||||||
req.promises.push(
|
req.promises.push(
|
||||||
|
|||||||
@@ -1,21 +1,42 @@
|
|||||||
|
const { teamsnapCallback } = require("../lib/utils");
|
||||||
|
|
||||||
utils = require("../lib/utils");
|
utils = require("../lib/utils");
|
||||||
|
|
||||||
exports.getTeams = async (req, res, next) => {
|
exports.getTeams = async (req, res, next) => {
|
||||||
const {layout, user} = req
|
const {layout} = req
|
||||||
teams = await teamsnap.loadTeams((err, teams) => {
|
const {user_id} = req.params
|
||||||
if (err) console.log("error in team.js", err);
|
promise = teamsnap.loadTeams({'userId':user_id},
|
||||||
})
|
(err, items) =>{
|
||||||
context = { layout, title: "Teams", teams: teams.filter(t=>!t.isRetired), user };
|
teamsnapCallback(err,items);
|
||||||
res.render("team/list", context);
|
req.teams = items;
|
||||||
|
})
|
||||||
|
.then(() => tsUtils.teamsnapLog('loadTeams', types=['teams'], null, req))
|
||||||
|
.fail(
|
||||||
|
next
|
||||||
|
)
|
||||||
|
req.promises.push(promise)
|
||||||
|
await Promise.all(req.promises)
|
||||||
|
try {
|
||||||
|
const context = { layout, title: "Teams", teams: req.teams.filter(t=>!t.isRetired) };
|
||||||
|
res.render("team/list", context);
|
||||||
|
} catch (e){
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.getTeamHome = async (req, res, next) => {
|
exports.getTeamHome = async (req, res, next) => {
|
||||||
await Promise.all(req.promises)
|
await Promise.all(req.promises)
|
||||||
const {user, team, team_preferences, upcoming_events, recent_events, layout} = req
|
const {user, team, team_preferences, upcoming_events, recent_events, layout} = req
|
||||||
context = {
|
|
||||||
title: "Home",
|
|
||||||
layout, team, user, team_preferences, upcoming_events, recent_events
|
|
||||||
};
|
|
||||||
|
|
||||||
res.render("team/home", context);
|
try {
|
||||||
|
context = {
|
||||||
|
title: "Home",
|
||||||
|
layout, team, user, team_preferences, upcoming_events, recent_events
|
||||||
|
};
|
||||||
|
res.render("team/home", context);
|
||||||
|
} catch (e) {
|
||||||
|
next (e);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -68,21 +68,40 @@ exports.teamsnapLog = (method, types, id, req, message="") => {
|
|||||||
`on url ${req.url}`,
|
`on url ${req.url}`,
|
||||||
`"${message}"`
|
`"${message}"`
|
||||||
)
|
)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.tsPromise = (func_name, params) => {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
teamsnap.bulkLoad(
|
||||||
|
params,
|
||||||
|
(err, data) => {
|
||||||
|
console.log();
|
||||||
|
if (err !== null) {
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resolve(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.teamsnapCallback = (err,items) => {
|
exports.teamsnapCallback = (err,items) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err.message);
|
console.log(err.message);
|
||||||
|
throw new Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.teamsnapFailure = (err) => {
|
exports.teamsnapFailure = (err, next) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err.message);
|
console.log(err.message);
|
||||||
}
|
}
|
||||||
|
next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
const getPluralType = (type) =>{
|
const getPluralType = (type) =>{
|
||||||
|
|||||||
@@ -19,13 +19,13 @@ const loadTeam = async (req,res,next) => {
|
|||||||
tsUtils.teamsnapCallback
|
tsUtils.teamsnapCallback
|
||||||
).then(bulkLoadItems=>{
|
).then(bulkLoadItems=>{
|
||||||
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes)
|
const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes)
|
||||||
tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req);
|
|
||||||
req.members = items.members;
|
req.members = items.members;
|
||||||
req.team_media_group = items.teamMediaGroups?.pop();
|
req.team_media_group = items.teamMediaGroups?.pop();
|
||||||
req.team_preferences = items.teamsPreferences.pop();
|
req.team_preferences = items.teamsPreferences.pop();
|
||||||
req.session.current_team_id = req.team.id
|
req.session.current_team_id = req.team.id
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
.then(() => tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Reference in New Issue
Block a user