0

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] 13 Oct 11:43:00 * サーバーはポート 6 379 で接続を受け入れる準備ができました [3648] 13 Oct 11:43:01 - DB 0: 4 つのスロット HT に 3 つのキー (0 揮発性)。[3648] 10 月 13 日 11:43:01 - 0 クライアント接続 (0 スレーブ)、使用中の 672976 バイト [3648] 13 Oct 11:43:06 - DB 0: 4 スロット HT の 3 つのキー (0 揮発性)。[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 - DB 0: 4 スロット HT の 3 つのキー (揮発性 0)。[3648] 10 月 13 日 11:45:11 - 1 クライアントが接続 (0 スレーブ)、680892 バイトが使用中

そしてブラウザアウトはこれです

こんにちは、未定義の null です。私はこのページにいます

私はこれがまったく初めてです..この作業を行う方法がわかりません。助けてください。

4

1 に答える 1

1

2 つの問題があります。

まず、db.set は非同期操作ですが、コールバックには何も含まれていない無名関数があるため、get に到達するまでに操作が完了しているという保証はありません。

後のコードを db.set コールバック内にネストする (面倒になる可能性があります) か、async などのノードにフロー制御ライブラリを使用する必要があります。

次に、クエリ パラメータから firstName を取得し、何も渡さないでください。したがって、最初の未定義、eghttp://localhost:8000/?firstName=Jaime (これが実際にエラーの原因です)。

これを機能させるには、両方を修正する必要があります。ノードでの非同期操作と非同期ライブラリについて読みました。

(リンクを追加するために編集されました)。

于 2012-10-13T07:08:57.043 に答える