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 回答