2015-08-10 8 views
2

hai Я новичок в утомительном и Es-6, это может быть глупый вопрос, но я борюсь, Я хочу, чтобы полные данные в массиве, используя утомительные соединения, здесь мой код:, используя утомительное соединение, необходимо получить общее количество данных

getZipData() { 
     var Connection = require('tedious').Connection; 
     Request = require('tedious').Request; 
     var config = { 
      userName: 'xx', 
      password: 'xxxx', 
      server: 'xxx', // You can use 'localhost\\instance' to connect to named instance 
      options: { 
       database: 'xxxxx', 
       rowCollectionOnDone:'true' 
      } 
     } 
     var connection = new Connection(config); 
     var jsonArray = []; 
     connection.on('connect', function (err) { 
      if (err) { 
       console.log(err) 
      } 

      var sql = "SELECT * FROM xxxxx"; 
      return new Promise(function(resolve,reject){ 
      var request = new Request(sql, 
       (err, rowCount, rows)=>{ 
        if (err) { 
         reject(err); 
        } 
        else { 
         alert("rows"); 
         console.log(rowCount + 'rows'); 
        } 
       }); 
       request.on('row', (columns)=>{ 
         var rowObject = {}; 
         columns.forEach((column)=> { 
          rowObject[column.metadata.colName] = column.value; 
         }); 
         jsonArray.push(rowObject); 
        }); 
       connection.execSql(request); 
       request.on('done', function(rowCount, more) { 
        console.log(rowCount + ' rows returned'); 
        alert("jsonArray2:"+jsonArray); 
        resolve(jsonArray) 
       }); 

      }); 
    }) 
} 
componentWillMount() { 
    this.getZipData().then(function(resolved){ 
     console.log(resolved); 
     alert("data:"+resolved); 
    }).catch(function(rejected){ 
     console.log(rejected); 
    }) 
} 

, когда я добавить request.on («сделано», функция (сверку, больше) и я не получил каких-либо данных, может ли один дать решение для нее, Я хочу всего данные, которые будут отображаться

ответ

0

Похоже, вы вызываете решение до того, как ваш запрос был выполнен:

var jsonArray = []; 

// Register callback for row event 
request.on('row', (columns)=>{ 
    var rowObject = {}; 
    columns.forEach((column)=> { 
    rowObject[column.metadata.colName] = column.value; 
    }); 

    jsonArray.push(rowObject); 
}); 

// Call resolve before executing request 
resolve(jsonArray); 

connection.execSql(request); 

docs упомянуть done событие, которое указывает запрос завершен:

request.on('done', function (rowCount, more, rows) { 
    // Call resolve here instead? 
    resolve(jsonArray); 
}); 

Отказ от ответственности: Я на самом деле не используется Tedious, но из документации, связанных это выглядит так, как вы» ищу.

+0

получение ошибки: «Uncaught TypeError: Невозможно прочитать свойство» , затем «неопределенного». –

+0

Я изменяю код, как указано выше, но я не получал никаких данных –

 Смежные вопросы

  • Нет связанных вопросов^_^