2016-05-21 12 views
0

私のコードでは、dbからhostsを取得し、コールバックで処理します。これを返品する方法はhostsですか?Q約束を持つコールバック内の値を返しますか?

var db = new sqlite3.Database(DB); 
var all = Q.nbind(db.all, db); 

function getHosts() { 
    return all('SELECT host FROM hosts ORDER BY host DESC', function(err, rows){ 
     // rows: [ { host: 'z' }, { host: 'a' } ] 
     // transform into hosts: ['a','z'] 
     var hosts = []; 
     var L = rows.length; 

     for (var i=0; i<L; i++) { 
      hosts.push(rows.pop().host); 
     } 
     // hosts = ['a','b', ... 'z'] 
     return hosts; // <-- doesn't work! 
    }); 
} 

答えて

0

あなたは約束ベースの機能に変換されているので、あなたがそのように使用する必要があります。

function getHosts() { 
    return all('SELECT host FROM hosts ORDER BY host DESC').then(function(rows) { 
     // rows: [ { host: 'z' }, { host: 'a' } ] 
     // transform into hosts: ['a','z'] 
     var hosts = []; 
     var L = rows.length; 

     for (var i=0; i<L; i++) { 
      hosts.push(rows.pop().host); 
     } 
     // hosts = ['a','b', ... 'z'] 
     return hosts; // <-- doesn't work! 
    }); 
} 

あなたにそのアップが処理するので、私はここにcatch()ハンドラを持っていませんそれはどこかで。

+0

ありがとうございます!まさに私が探していたもの。 – cub01d

関連する問題