Đây là mô hình của tôi với một phản ứng json:Nhận một json qua Http Yêu cầu trong NodeJS
exports.getUser = function(req, res, callback) {
User.find(req.body, function (err, data) {
if (err) {
res.json(err.errors);
} else {
res.json(data);
}
});
};
Ở đây tôi nhận được nó qua http.request. Tại sao tôi nhận được (dữ liệu) một chuỗi và không phải là một json?
var options = {
hostname: '127.0.0.1'
,port: app.get('port')
,path: '/users'
,method: 'GET'
,headers: { 'Content-Type': 'application/json' }
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (data) {
console.log(data); // I can't parse it because, it's a string. why?
});
});
reqA.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
reqA.end();
Làm cách nào tôi có thể nhận được json?
JSON là một tuần tự hóa. Nó chỉ là JSON nếu nó nằm trong một chuỗi, hoặc không được phân tích cú pháp dưới dạng JavaScript. Bạn đang tìm kiếm 'JSON.parse() '? –
đây là nó. cảm ơn Matt –
Tôi nghĩ rằng sự kiện 'dữ liệu' được gọi nhiều lần mỗi lần với một đối số là một đoạn dữ liệu chuỗi. Nó sẽ không được khá có khả năng rằng 'dữ liệu' trở lại trong sự kiện đó bị phá vỡ JSON bởi vì nó chỉ là một phần nhỏ của tổng số tài liệu? Tôi nghĩ rằng bạn cần phải đệm dữ liệu và sau đó sử dụng 'JSON.parse()' trong sự kiện 'end' của bạn. – Sukima