rethinkDB,然后查询结果

我正在使用nodeJS与本机rethinkDB驱动程序,并有一个基本的select3列查询如下:

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()build议重新考虑文档,但我得到一个null,当我尝试返回这个,我认为结果太大。 当我在cursor.each()函数console.log(result)我看到我期望的结果,所以我相信他们被推到items数组,但我不确定如何适当地引用列表后,它是完全填充结果数据。

任何帮助或指导,将不胜感激!

您正在混合callback风格和承诺,这使得事情变得更加困难,因为您必须在callback中返回承诺。 在你的代码中,在callback完成之前触发promise满足并logging结果。

所以最好坚持承诺。 即使对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) }) }