-1

だから私はここで見つけた次のテストコードを持っています

// Include http module,
var http = require('http'),
// And mysql module you've just installed.
   mysql = require("mysql");
// Create the connection.
// Data is default to new mysql installation and should be changed according to your configuration.
var connection = mysql.createConnection({
   user: "root",
   password: "pass",
   database: "db_name"
});
// Create the http server.
http.createServer(function (request, response) {
   // Attach listener on end event.
   request.on('end', function () {
      // Query the database.
      connection.query('SELECT * FROM your_table;', function (error, rows, fields) {
         response.writeHead(200, {
            'Content-Type': 'x-application/json'
         });
         // Send data as JSON string.
         // Rows variable holds the result of the query.
         response.end(JSON.stringify(rows));
      });
   });
// Listen on the 8080 port.
}).listen(8080);

mysql モジュールをダウンロードし、もちろん mysql をインストールし、次のスクリプトを実行しましたが、結果が得られません。私が間違っていることを教えてもらえますか?

ロードしようとすると

http://localhost:8080/

ブラウザがページを数分間読み込もうとしても結果がありません。

ありがとう。

アップデート ここに画像の説明を入力

4

3 に答える 3

2

私はあなたが忘れたと思います

connection.connect()

私はしばらくの間これらを使用していますが、私にとってはうまく機能します。

// Include http module,
var http = require('http'),
// And mysql module you've just installed.
   mysql = require("mysql");
// Create the connection.
// Data is default to new mysql installation and should be changed according to your configuration.
var connection = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "pass",
   database: "db_name"
});
connection.connect();
// Create the http server.
http.createServer(function (request, response) {
   // Attach listener on end event.
   request.on('end', function () {
      // Query the database.
      connection.query('SELECT * FROM your_table;', function (error, rows, fields) {
         response.writeHead(200, {
            'Content-Type': 'x-application/json'
         });
         // Send data as JSON string.
         // Rows variable holds the result of the query.
         response.end(JSON.stringify(rows));
      });
   });
// Listen on the 8080 port.
}).listen(8080);
于 2012-10-15T12:01:28.517 に答える
0

あなたを助けるはずのいくつかの以前の回答

Express.JS + Node-Mysql および http リクエストごとに 1 つの接続

nodejsでhttpサーバーを起動する前にmysqlを照会する方法

db から node.js http サーバー応答への簡単な情報を取得する

mysql でプールを使用する Node.js MySQL 持続的な接続が必要

少し複雑なソリューションでは、コードをファイルに分割し、db コードを db.js または応答ハンドラーまたはルーターに配置します。

私のコードはプールを使用しています。

5 つのファイルに保存し、npm install を実行します

例(ひどいフォーマットを許してください)

    // requestHandlers.js
    // request handler with mysql code

    var mysql = require("mysql");
    var Query1 = "SELECT * from Tablexyz WHERE xx = 'doh'";

    var body = '<html>'+
'<head>'+
'<meta http-equiv="Content-Type" content="text/html; '+
'charset=UTF-8" />'+
'</head>'+
'<body>'+
'<h1> Query </h1>';

    var body1 = '</body>'+
'</html>';

    var pool = mysql.createPool({
    host     : 'host',
    user     : 'dbuser',
    password : "pword",
    database : 'database',
    connectionLimit: 10,
    queueLimit: 10
     });


    function qquery(callback){
    console.log('in qquery');
        pool.getConnection(function(err, connection) {
        pool.query( Query1 , function(err, rows ,fields) {
            if (err) {
                    return callback(new Error("An error has occured" + err));
                }
            if (rows.length > 0){
             callback( rows);
             connection.release();          
            }
        });
        });
        }

    function start(response) {
    console.log("Request handler 'start' was called.");


    qquery( function (rows , err) {
             if (err) {
                console.log(err);
             }
             else{
                 console.log(rows);
                 response.writeHead(200, {"Content-Type": "text/html"});
                             response.write(body);
                 response.write( 'query: ' + JSON.stringify( rows ) );
                 response.write(body1);
                             response.end();
             }
    });


}

exports.start = 開始;

    ///////////////////////////////////- new file
    //server.js

    var http = require("http");
    var url = require("url");

    function start(route, handle) {
     function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");
    route(handle, pathname, response);
     }
     http.createServer(onRequest).listen(8888);
     console.log("Server has started.");
    }

    exports.start = start;
  ///////////////////////////////////-new file
  // router.js

  function route(handle, pathname, response) {
   console.log("About to route a request for " + pathname);
   if (typeof handle[pathname] === 'function') {
    handle[pathname](response);
   } else {
    console.log("No request handler found for " + pathname);
    response.writeHead(404, {"Content-Type": "text/plain"});
    response.write("404 Not found");
    response.end();
   }
  }

  exports.route = route;
  ///////////////////////////////////- new file
  //index.js

  var server = require("./server");
  var router = require("./router");
  var requestHandlers = require("./requestHandlers");
  var handle = {}
  handle["/"] = requestHandlers.start;
  handle["/start"] = requestHandlers.start;
  handle["/upload"] = requestHandlers.upload;
  server.start(router.route, handle);

  ///////////////////////////////////- new file
  //package.json
   {
     "name": "application-name",
     "version": "0.0.1",
     "private": true,
     "scripts": {
     "start": "node app.js"
    },
     "dependencies": 
    {
      "express": "3.4.0",
      "jade": "*",
      "stylus": "*",
      "mysql": "*"
     }

}

于 2013-10-23T06:22:30.207 に答える
0

@石川ヨシ

コールバックを使用する

// Include http module
var http = require('http')
// And mysql module you've just installed.
 mysql = require("mysql");

 var Query1 = "SELECT * from Tablexyz WHERE xx = 'doh'";

   var connection = mysql.createConnection({
    host     : 'host',
    user     : 'dbuser',
    password : "pword",
    database : 'database',
    });

   connection.connect();

   function getData(callback){
   console.log('in getData');
    connection.query( Query1 , function(err, rows ,fields) {
    if (err) {
        return callback(new Error("An error has occured" + err));
    }
    if (rows.length > 0){
        callback( rows);
    }

});
}

// Create the http server.
http.createServer(function (request, response) {
// Attach listener on end event.

  // Query the database.
 getData(function (rows , err) {
    if (err) {
       console.log(err);
    }
     else{
         response.writeHead(200, {"Content-Type": "text/html"});
         response.write( 'query: ' + JSON.stringify( rows ) );
         response.end();
     }
});
   // Listen on the 4001 port.
   }).listen(4001);
于 2013-10-23T06:40:13.757 に答える