Rai*_*Rai 7 json node.js angularjs
我正在尝试.json使用 node js 服务将文件的内容转换为 angularjs 方法。但我收到以下错误:
_http_outgoing.js:700 throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); ^ TypeError [ERR_INVALID_ARG_TYPE]:“chunk”参数必须是字符串或缓冲区类型之一。在 ServerResponse.end (_http_outgoing.js:700:13) 接收到类型对象
这是相应的代码片段...
角度控制器:注释行都是我尝试过但失败的行。
var currentProcess = "process_1cA";
$scope.storestats = [];
var resAss = $resource('/procs/getstorestats');
var stats = resAss.get({
process: currentProcess,
date: date.getFullYear() + "" + m + "" + d
});
stats.$promise.then(function(response) {
if (response != undefined) {
// var r = JSON.parse(response);
//$scope.storestats.push(r);
//$scope.storestats.push(r);
//var r = JSON.parse(response);
$scope.storestats.push(response);
//angular.forEach(r, function(value, key) {
// $scope.storestats.push({key : value});
//});
}
});
Run Code Online (Sandbox Code Playgroud)
NODEJ 的服务:
httpApp.get('/procs/getstorestats', function(req, res, next) {
try {
fs.readFile(cfg.routestatspath + "storestats-"+req.query.process + "-" + req.query.date + ".json", function (err, data) {
var msgs1 = JSON.parse(data);
//var r = data.toString('utf8');
var msgs2 = JSON.stringify(msgs1);
console.log(msgs1);
res.end(msgs1);
});
}
catch (err) {
res.end(err.toString());
}});
Run Code Online (Sandbox Code Playgroud)
PS:注释掉的行是我尝试过但失败的行。此外,节点服务代码片段中的注释行没有给出错误,并且在记录时正确显示,但响应控制器时的数据是空白的。
jak*_*lla 11
我在这里猜测了一下,但我认为您只需要在您的 Node 代码中更改res.end()为res.send()。“end”方法用于流式传输数据块,然后end()在完成后调用。“发送”方法用于一次性发送响应并让节点处理流。
另外,请确保您正在发送一个字符串!
httpApp.get('/procs/getstorestats', function(req, res, next) {
try {
fs.readFile(cfg.routestatspath + "storestats-"+req.query.process + "-" + req.query.date + ".json", function (err, data) {
var msgs1 = JSON.parse(data);
//var r = data.toString('utf8');
var msgs2 = JSON.stringify(msgs1);
console.log(msgs1);
res.send(msgs2); // NOTE THE CHANGE to `msg2` (the string version)
});
}
catch (err) {
res.send(err.toString()); // NOTE THE CHANGE
}
});
Run Code Online (Sandbox Code Playgroud)
弄清楚了。需要进行 2 个小更改。其中之一是在控制器中,使用“$resource.query”而不是“$resource.get”。在服务中,正如 @jakarella 所说,必须使用 .end() 中的字符串化部分;
控制器:
var resAss = $resource('/procs/getstorestats');
var stats = resAss.query({process: currentProcess, date: date.getFullYear() + "" + m + "" + d});
stats.$promise.then(function (response) {
$scope.storestats.push(response);
}
Run Code Online (Sandbox Code Playgroud)
节点服务:
httpApp.get('/procs/getstorestats', function(req, res, next) {
try {
fs.readFile(cfg.routestatspath + "storestats-"+req.query.process + "-" + req.query.date + ".json", function (err, data) {
var msgs1 = JSON.parse(data);
var msgs2 = JSON.stringify(msgs1);
console.log(msgs2);
res.end(msgs2);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30930 次 |
| 最近记录: |