我连接redis服务器的node.js代码就像这样
var http = require("http"),
querystring = require("querystring"),
redis = require("redis"),
db = redis.createClient(6379, "127.0.0.1");
db.set("Jaime", "Developer", function(){});
http.createServer(function(req, res) {
var qs = querystring.parse(req.url.split("?")[1]),
firstName = qs.firstName;
db.get(firstName, function(err, lastName) {
var userName = firstName + " " + lastName,
html = "<!doctype html>" +
"<html><head><title>Hello " + userName + "</title></head>" +
"<body><h1>Hello, " + userName + "!</h1></body><h2>I am in this page</h2></html>";
res.end(html);
});
}).listen(8000);
我的redis服务器也在运行,并发出这样的消息
[3648] 10月11日11:43:00 *服务器现在已准备好接受连接 在端口6 379 [3648] 10月11日11:43:01 - 数据库0:3键(0易失性)在4 插槽HT。 [3648] 10月13日11:43:01 - 0个客户连接(0个奴隶), 正在使用的672976个字节[3648] 13 Oct 11:43:06 - DB 0:3个键(0个易失性) 在4槽HT。 [3648] 10月13日11:43:06 - 0个客户连接(0 奴隶),正在使用672976个字节
当我用浏览器(http:// localhost:8000)连接时,服务器状态为
[3648] 10月13日11:45:07 - 接受127.0.0.1:1715 [3648] 10月13日 11:45:10 - 4个插槽HT中的DB 0:3键(0易失性)。 [3648] 10月13日 11:45:11 - 连接1个客户端(0个从属),使用680892个字节
,浏览器就是这个
您好,未定义null! 我在这个页面
我是一个全新的人...我不知道如何做这项工作,请帮助我。
答案 0 :(得分:1)
你有两个问题。
首先,db.set是一个异步操作,但你在回调中有一个匿名函数,里面没有任何东西,因此无法保证在你到达get时操作已经完成。
您需要将后面的代码嵌套在db.set回调中(可能会变得混乱),或者为异步等节点使用流控制库。
其次,你从查询参数中检索firstName,然后不传递任何内容...因此第一个未定义,eghttp:// localhost:8000 /?firstName = Jaime(这实际上是导致错误的原因) )。
你需要修复这两个工作。我读了节点和异步库中的异步操作。
(已编辑以添加链接)。