Я бы использовал обещания angularJS для заполнения данных в сетке. Я хотел бы загружать данные «подряд за строкой», как только сервер nodeJS, на котором используется модуль «mssql» с включенным «потоком», возвращает клиенту каждую отдельную строку из БД.угловые обещания и nodejs http получить ответ
На стороне клиента я использую эти функции:
function asyncGreet() {
var deferred = $q.defer();
var _url = 'http://localhost:1212/test';
$http.get(_url).
then(function(result) {
deferred.resolve(result);
}, function(error) {
deferred.reject(error);
}, function(value) {
deferred.notify(value); //<<-- In "value" I would like to get every single row
});
return deferred.promise;
}
$scope.btnTest = function() {
var promise = asyncGreet();
promise.then(function(res) {
console.log('Success: ' + res.data + "\n");
}, function(reason) {
console.log('Failed: ' + reason);
}, function(update) {
console.log('Got notification: ' + update); //<<--
});
};
На сервере nodeJS те:
app.get('/test', function (req, res) {
//sql for test
var _query = 'select top 50 * from tb_test';
var sql = require('mssql');
var connection;
var config = {
user: 'testUser',
password: '12345',
server: 'localhost\\test',
database: 'testDB',
stream: true
};
connection = new sql.Connection(config, function (err) {
var request = new sql.Request(connection);
request.query(_query);
request.on('recordset', function(columns) {
// Emitted once for each recordset in a query
//res.send(columns);
});
request.on('row', function(row) {
res.write(JSON.stringify(row)); //<<-- I would like intercept this event on client side
// and get the result in my angularJS function on deferred.notify
});
request.on('error', function(err) {
// May be emitted multiple times
console.error(err)
});
request.on('done', function(returnValue) {
// Always emitted as the last one
res.end('DONE');
});
});
});
Любой человек может помочь мне с этим?
Спасибо!
Вы не можете сделать это с помощью классических HTTP-запросов, используя AngularJS Client. Вы можете захотеть использовать что-то вроде Socket.IO для отправки результатов по одному, поскольку они читаются – Don
@ Jackpot21 Проверьте документы mssql для метода pipe. Это может быть так просто, как request.pipe (res) – Molda