我使用node + express作为后端,postgresql作为数据库,EJS作为前端。
我正在使用pm2包进行服务器启动/停止/日志。
有时,API查询错误意味着服务器在1/2分钟获得504网关超时错误后没有响应。
示例:我在此页面中访问http://mysiteurl/index url我遇到了一些错误或异常,我尝试连接另一个页面http://mysiteurl/about,此页面也收到错误:504网关超时
有时会在/ index call
中收到错误错误详情:
{ [error: invalid input syntax for integer: "undefined"]
name: 'error',
severity: 'ERROR',
code: '22P02',
detail: undefined,
hint: undefined,
position: '87',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
file: 'numutils.c',
line: '62',
routine: 'pg_atoi' }
例如,我的代码是/ index和/ about页面代码:
router.get('/index', function(req, res) {
globaldetails.video(userId, function(err, videoList) {
users.getUserDetails(userId, function(err, userDetails) {
globaldetails.expertContent(userId, function(err, expertContent) {
res.render('users/index', {
video : videoList.rows,
userDetails : userDetails.rows,
expertContent : expertContent.rows,
});
});
});
});
});
router.get('/about', function(req, res) {
res.render('users/about');
});
function video(userId, callback) {
client.query("select * from video where userId='" + userId + "' ", function(err, video) {
console.log(err);
callback(err, video);
});
}
function getUserDetails(userId, callback) {
var query = "select * from users where userId='" + userId + "' ";
console.log(query);
client.query(query, function(err, result) {
if (err) {
console.log(err);
} else {
callback(err, result);
}
});
}
function expertContent(userId, callback) {
var query = "select * from content where userId='" + userId + "' ";
client.query(query, function(err, expertContent) {
if (err) {
console.log(err);
} else {
callback(err, result);
}
});
}
任何人都可以为此提供帮助。
期待结果:当我收到错误/索引api调用时,它不应该影响/ page api调用。
答案 0 :(得分:0)
这里的问题可能是userId为undefined
,请将其记录下来进行检查。
您的应用中没有错误处理程序,它会使您的应用冻结
router.get('/index', function(req, res,next) {
globaldetails.video(userId, function(err, videoList) {
if(err) next(err); // do same things will other callback or change your code to Promise to easy debug
else {
users.getUserDetails(userId, function(err, userDetails) {
globaldetails.expertContent(userId, function(err, expertContent) {
res.render('users/index', {
video : videoList.rows,
userDetails : userDetails.rows,
expertContent : expertContent.rows,
});
});
});}
});
});
您还需要逻辑处理所有错误
app.use(function (err, req, res, next) {
res.render(error page with err info)
})