1

私はnode.jsが初めてです。私が取り組んでいるプロジェクトでは、大きな配列 (625 項目) を文字列として MySQL データベースに格納する必要があり、それを実現するためにNode MySQLを使用しています。

現在、「/(列名)?(値)」に対してリクエストが行われたときに行が更新されるようにしています。残念ながら、625 個のアイテムを文字列としてノードに渡すことが最も効率的な方法ではないことを理解するのにそれほど時間はかかりませんでした。

クエリ文字列以外に、大きな配列を文字列として渡す代替方法について何か提案はありますか?

var http = require('http'),
   mysql = require("mysql"),
   url = require("url"),
   express = require("express");

var connection = mysql.createConnection({
   user: "root",
   database: "ballot"

});  

var app = express();
app.use(express.bodyParser());

app.options('/', function (request, response)
{
    response.header("Access-Control-Allow-Origin", "*");
    response.end();
});

app.get('/', function (request, response)
{
    connection.query("SELECT * FROM pathfind;", function (error, rows, fields) {
        for(i=0;i<rows.length;i++)
        {
            response.send('<div id="layers">'+rows[i].layers+'</div> \
                            <div         id="speed">'+rows[i].speed+'</div> \
                            <div     id="direction">'+rows[i].direction+'</div>');
        }
        response.end();
    });
});

app.post('/', function (request, response)
{   
    console.log(request.param('data', null));
    var urlData = url.parse(request.url, true);
    if(urlData.pathname = '/layers')
    {
        col = "layers";
    }
    else if(urlData.pathname = '/speed')
    {
        col = "speed";
    }
else if(urlData.pathname = '/direction')
    {
        col = "direction";
    }
    req.addListener("data", function(data) {
        connection.query("UPDATE pathfind SET "+col+"="+data+" WHERE num=0",     function (error, rows, fields) {
            if (error)
            {
                app.close();
            }
        }); 
    });
});

app.listen(8080);**

編集:これで、投稿を使用する必要があることがわかりました。上記のコードは、express.js を使用して書き直しました。私がオンラインで見たほとんどの例では、HTML フォームを使用した投稿を使用していますが、これは問題ありませんが、私のプロジェクトでは AJAX リクエストを介してデータを投稿する必要があります。そのデータがnode.jsでどのように解析されるかを誰かに教えてもらえますか?

4

1 に答える 1

1

このように投稿データを抽出できます。

if (req.method == 'POST') {
    var body = '';
    req.on('data', function (chunk) {
        body += chunk;
    });
    req.on('end', function () {
        var postData = body.toString();
        console.log(postData);
    });
}
于 2012-11-04T03:44:57.827 に答える