使用redis服务器的nod​​e.js中的undefined null错误?

时间:2012-10-13 06:16:34

标签: node.js redis

我连接redis服务器的nod​​e.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! 我在这个页面

我是一个全新的人...我不知道如何做这项工作,请帮助我。

1 个答案:

答案 0 :(得分:1)

你有两个问题。

首先,db.set是一个异步操作,但你在回调中有一个匿名函数,里面没有任何东西,因此无法保证在你到达get时操作已经完成。

您需要将后面的代码嵌套在db.set回调中(可能会变得混乱),或者为异步等节点使用流控制库。

其次,你从查询参数中检索firstName,然后不传递任何内容...因此第一个未定义,eghttp:// localhost:8000 /?firstName = Jaime(这实际上是导致错误的原因) )。

你需要修复这两个工作。我读了节点和异步库中的异步操作。

(已编辑以添加链接)。