我正在开发一个简单的 Web 应用程序node-pg
,它使用express.js
登录页面和显示来自数据库的一些数据的仪表板。
用户输入用户名和密码后,仪表板及其所有数据最初使用以下功能加载良好:
const queryLogin = (request, response) => {
var username = request.body.username;
var password = request.body.password;
if (username && password) {
Promise.all([
pool.query('SELECT * FROM jobdesc WHERE complete=0 AND customer=$1 ORDER BY date_rec ASC LIMIT 10', ['somecustomer']),
pool.query('SELECT * FROM accounts WHERE email=$1 AND password=$2', [username, password],)
]).then(function([orderResults, results]) {
if (results.rows.length > 0) {
request.session.loggedin = true;
request.session.username = username;
var user = username;
var orderObj = orderResults.rows;
if (results.rows[0].account_type == 1) {
request.session.account_type = 1;
response.render('pages/index');
} else if (results.rows[0].account_type == 0) {
request.session.account_type = 0;
response.render('pages/dashboard', {
user: user,
orderObj: orderObj
});
} else {
console.log("Invalid Account Type");
}
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
}, function(error) {
throw error;
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
}
问题是我有一个link
重定向navbar
到仪表板的内容(如果用户导航到不同的页面并想要返回主页)。按下时出现以下错误:Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我用来尝试重定向到主页的路线是: app.get('/home', con.launchDashboard)
该函数的代码是:
const launchDashboard = (request, response) => {
if (request.session.loggedin) {
Promise.all([
pool.query('SELECT * FROM jobdesc WHERE complete=0 AND customer=$1 ORDER BY date_rec ASC LIMIT 10', ['somecustomer'])
]).then(function([orderResults]) {
if (request.session.account_type == 1) {
return response.render('pages/index');
}
else if (request.session.account_type == 0) {
var user = request.session.username;
var orderObj = orderResults.rows;
return response.render('pages/dashboard', {
orderObj: orderObj,
user: user
});
}
})
} else {
response.render('pages/login');
}
response.end();
}
我不确定为什么会收到此错误,我对在将标头发送到客户端后设置标头的位置感到困惑。