我正在尝试使用node js服务将.json
文件的内容转换为angularjs方法。但是出现以下错误:
这是相应的代码片段...
Angular Controller :注释行是我尝试过但失败的所有内容。
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});
//});
}
});
NODEJs服务:
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());
}});
附言:注释掉的行是我尝试过但失败的行。另外, Node 服务代码段中的带注释的行没有出现错误,并且在登录时正确显示了该行,但是响应 Controller 时的数据为空白。
最佳答案
我在这里有点猜测,但是我认为您只需要在Node代码中将res.end()
更改为res.send()
。当您流式传输数据块时使用“end”方法,然后在完成所有操作后调用end()
。 “发送”方法用于一次性发送响应,并让Node处理流。
另外,请确保您发送回一个字符串!
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
}
});