2015-12-21 40 views
1

我使用與的NodeJS本地rethinkDB司機,有一個基本的選擇3列查詢,如下所示:rethinkDB。然後在查詢結果

var runQuery = function() { 
var items = []; 
r.connect({host: 'someHost', 
port:28015, 
db:'test'}) 
.then(function(c){ 
r.table('ebb1') 
    .pluck("col1","col2","col3") 
    .run(c, function(err,cursor){ 

     cursor.each(function(err,result){ 
      if(err) throw err; 
      items.push(result); 
      }) 
     }) 
    }).then(console.log(items)) 
} 

我試着用cursor.toArray()通過反思文檔的建議,但我得到一個null當我嘗試返回這個,我認爲結果太大。當我在cursor.each()函數中看到我所期望的結果時,我相信它們被推入items數組,但我不確定如何在完全填充結果數據後正確引用列表。

任何幫助或指導,將不勝感激!

回答

1

您在混合回調風格和承諾,這會讓事情變得更難,因爲您必須在回調中返回諾言。在你的代碼中,在回調完成之前觸發promise滿足並記錄結果。

因此,堅持承諾會更好。即使toArray也可以回覆諾言。

var runQuery = function() { 
    r.connect({ 
    host: 'someHost', 
    port:28015, 
    db:'test' 
    }) 
    .then(function(c){ 
    return r.table('ebb1') 
      .pluck("col1","col2","col3") 
      .run(c) 
    }) 
    .then(function(re) { 
    return re.toArray() 
    }) 
    .then(function(data) { 
    //data is the array of your query result 
    console.log(data) 
    }) 
} 
相關問題