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

Saving the value of req.query['name'] to a variable in Node.jS?

本文关键字:变量 jS 一个 Node query req name 保存      更新时间:2023-11-21

我正在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');

问题是您试图向同一请求发送两个响应,这是第一次使用

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

而第二次是在CCD_ 1或CCD_。删除第一个,它应该可以正常工作,或者连接输出,并且只有一个res.send()传递连接的输出。

您在回调开始时发送了一个响应:

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

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

去掉第一个,你就没事了。

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