1
我是node.js的新手。我正在處理的一個項目需要將大數組(625項)作爲字符串存儲在MySQL數據庫中,並且我使用Node MySQL來完成該項目。Node.js beginner-請求無查詢字符串
現在我擁有它,以便在對「/(列名)?(值)」發出請求時更新該行。不幸的是,學習將625個項目作爲字符串傳遞給節點並不是最有效的方式。
對於除了querystrings以外的其他字符串傳遞大數組的方法,你有什麼建議嗎?
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庫。 – Harangue
使用'Express',而不僅僅是'http'模塊,它有一個叫做bodyparser的中間件,它可以讓你訪問POST請求的主體。在客戶端使用標準的'jQuery.post(url,data,callback)'來發布數據。 –