如何处理Angular $ http中的Express response.write()响应

我试图用ng-file-upoad上传一个csv文件。 这是我的代码片段:

Upload.upload({ url: baseUrl + '/file-upload', data: { file: file } }) .then(function(res) { console.log('success: ===> ', res); }, function(err) { console.log('erroir: ===> ', err); }, function() { console.log('progress: ', arguments); }); 

而在节点环境中,我parsing文件并将数据插入到数据库中。 我不想closures连接。 这就是为什么我使用“response.write”。 这是我的代码片段:

 var path = req.files.file.path, currentIndex = 0; fs.readFile(path, 'utf8', function(err, data) { if(err) { // handle error } else { // making array (dataArray) from data dataArray.forEach(function(eachData){ newEntry = new app.db.models.SomeCollection(eachData); newEntry.save(function(err, data) { if (currentIndex === dataArray.length) { res.end('DONE!'); } else { currentIndex++; res.write(JSON.stringify({ total: dataArray.length, done: currentIndex })); } }); }) } }); 

我的问题是我将如何获得我通过“res.write”传递的数据? 我不想只为了这个目的使用套接字。 我错过了什么吗?

正如这里已经解释过的

response.send(msg)等于response.write(msg); response.end();

这意味着,发送只能被调用一次,写入可以多次调用,但是你必须调用自己的结束。

您可能没有收到响应,因为response.end()缺失。

一旦你end()你的回应,你应该能够访问你的angular度控制器中的Upload.upload诺言中返回的响应数据。

这不像你说的那样密切联系 。 这不是一个类似于实现的套接字 (比如ws或者socket.io )。 一旦发出请求,即使提供关于该请求的错误细节(即状态401,403,404等),也应该有响应。