rethinkDB .then 查询结果
rethinkDB .then on query result
我将 nodeJS 与本机 rethinkDB 驱动程序一起使用,并且有一个基本的 select 3 列查询,如下所示:
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))
}
我尝试按照 rethink 文档的建议使用 cursor.toArray()
,但是当我尝试 return 时我得到了一个 null,我认为结果太大了。当我在 cursor.each()
函数中 console.log(result)
时,我确实看到了我期望的结果,所以我相信它们被推到了 items
数组中,但我不确定如何正确引用列表在它完全填充结果数据之后。
如有任何帮助或指导,我们将不胜感激!
您正在混合回调样式和承诺,这让事情变得更难,因为您必须 return 在回调中承诺。在您的代码中,promise fullfillment 在回调完成之前触发并记录结果。
所以还是信守诺言比较好。甚至 toArray
也可以 return 承诺。
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)
})
}
我将 nodeJS 与本机 rethinkDB 驱动程序一起使用,并且有一个基本的 select 3 列查询,如下所示:
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))
}
我尝试按照 rethink 文档的建议使用 cursor.toArray()
,但是当我尝试 return 时我得到了一个 null,我认为结果太大了。当我在 cursor.each()
函数中 console.log(result)
时,我确实看到了我期望的结果,所以我相信它们被推到了 items
数组中,但我不确定如何正确引用列表在它完全填充结果数据之后。
如有任何帮助或指导,我们将不胜感激!
您正在混合回调样式和承诺,这让事情变得更难,因为您必须 return 在回调中承诺。在您的代码中,promise fullfillment 在回调完成之前触发并记录结果。
所以还是信守诺言比较好。甚至 toArray
也可以 return 承诺。
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)
})
}