Я все еще довольно плохо знаком со всем узлом, так что, пожалуйста, прости меня, если это невероятно глупо, но:
Если я позвоню query()
на node-mysql объект клиента, я больше не могу получить тело объекта запроса из моего веб-приложения ( express ).
мои базовые запросы шаблонов POST / PUT, требующие аутентификации пользователя:
_db_client = connect_to_db_server();
app.post("/some/path", function (req, res) {
_db_client.query("SELECT * FROM Users WHERE username = ?",
[ http_basic_auth.username ], function (err, results) {
if (err != null || resp == null) {
res.send("AUTH FAILURE: sorry, you can't do that", 403);
} else {
get_request_body(req, function (body) {
do_something();
res.send("yay, I'm happy", 200);
});
}
});
});
Теперь проблема в том, что функция get_request_body просто никогда не возвращается.Кажется, что он просто «заблокирован» на объекте запроса.
Вот пример программы:
var express = require('express'),
mysql = require('mysql');
var MySQLClient = mysql.Client;
var client = new MySQLClient();
client.user = 'root';
client.password = '';
client.connect(function(err, res) {
client.query("USE Gazelle", function (qerr, qresp) {
});
});
var app = express.createServer( );
app.use(express.bodyParser());
app.post("/test", function (req, res) {
client.query('SELECT * FROM Users', function (err, results) {
get_request_body(req, function (body) {
console.log("wooo");
console.log(body);
res.send("cool", 200);
});
});
});
app.listen(8080);
function get_request_body (req, callback) {
if (req.rawBody != undefined) {
callback(req.rawBody);
} else {
var data = '';
req.setEncoding('binary');
req.on('data', function(chunk) {
data += chunk;
});
req.on('end', function() {
callback(data);
});
}
}
Трюк : сбой только в том случае, если я 'используя данные POST, состоящие из нескольких частей, а не обычные данные POST:
curl -u un:pw -X POST -d ' { "cat" : "meow" }' http://localhost:8080/test
работает
curl -u un:pw -X POST -F "image_file=@test.jpg" http://localhost:8080/test
блокируется и никогда не возвращается.Я видел ту же ошибку с connect-form и multipart-js .Вид тупика здесь и сейчас.
Я полный идиот?Разве это не правильный способ делать вещи?