将req.query ['name']的值保存到Node.jS中的变量?

时间:2016-04-03 17:06:21

标签: javascript node.js express

我正在编写node.js中的登录系统,我正在尝试这样做:

var auth = req.query['name']

然后我将auth与数据库查询的结果进行比较,但是当我尝试使用/?name = foo加载页面时,我收到此错误:

Error: Can't set headers after they are sent.

我目前的代码是:

var express = require('express');
var app = express();

app.get('/', function(req, res){
    res.send('hello! every thing is working!');
    var auth = req.query['name']
    if (auth === "ozzie"){// I will obviously change this.
        res.send('Hello! Your details have been authenticated')
    }
    else
    {
        res.send('Sorry! That did not work! please try again! ')
    }
});


app.listen(8888, '127.0.0.1'); 
console.log('running on, local Ip + 8888');

2 个答案:

答案 0 :(得分:1)

问题在于您第一次尝试向同一请求发送两个回复

res.send('hello! every thing is working!');

,第二次在ifelse区域内。删除第一个,它应该工作正常或连接输出,只有一个res.send()传递连接输出。

答案 1 :(得分:0)

您正在回拨开始时发送回复:

app.get('/', function(req, res){
     res.send('hello! every thing is working!'); // here

然后,再次在条件if - else块中调用相同的东西。 由于调用send()方法设置标题,您最终会两次执行相同操作。

删除第一个,你就可以了。

注意:出于调试目的,您可以使用console.log并在运行应用程序主文件的控制台上查看调试信息。