【问题标题】:Node.js beginner- request without query stringsNode.js 初学者 - 没有查询字符串的请求
【发布时间】:2012-11-04 11:44:57
【问题描述】:

我是 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 中解析这些数据吗?

【问题讨论】:

  • 大量数据最好通过 POST 请求发送,特别是如果该请求导致对数据库的修改,因为 GET 请求旨在在不改变状态的情况下运行任意次数
  • 很明显我一直在用错误的方式解决这个问题。如何将数据发布到数据库?顺便说一句,我正在使用 jQuery 的内置 ajax 库。
  • 使用Express,而不仅仅是http模块,它有一个很好的中间件,叫做bodyparser,它可以让你访问POST请求的主体。在客户端使用标准jQuery.post(url, data, callback) 发布数据。
  • 如何使用 request.param(); 访问数据如果数据不是通过 HTML 表单发布的?
  • @J4G A POST 通过表单和 jQuery 发送产生相同的数据。

标签: javascript mysql node.js query-string


【解决方案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);
    });
}

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2011-10-04
    • 2015-11-08
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    相关资源
    最近更新 更多