0

我正在开发一个简单的 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();
}

我不确定为什么会收到此错误,我对在将标头发送到客户端后设置标头的位置感到困惑。

4

0 回答 0