rethinkdb& nodejs:将结果保存在var中

时间:2017-08-26 08:29:44

标签: node.js rethinkdb

它可以在变量中保存rethinkdb的结果查询吗?

喜欢这个??

var test = r.db('chat').table('group_chat').count(r.row('passengers').contains(function(passeggers) {
   return passeggers('nome').eq('pigi');
 })).run()

现在我使用这种方法

var test;

r.db('chat').table('group_chat').count(r.row('passengers').contains(function(passeggers) {
   return passeggers('nome').eq('pigi');
 })).run().then(function(response){
    test = response;
})

2 个答案:

答案 0 :(得分:0)

如果您不喜欢使用promises并使用最新版本的ECMAScript,则可以使用async/await,它提供语法糖,让您编写异步代码,就好像它是同步的一样。

您可以像这样重写您的示例:

async function getTest() {
    var test = await r.db('chat').table('group_chat').count(r.row('passengers').contains(function(passeggers) {
        return passeggers('nome').eq('pigi');
    })).run();
    return test;
}

请注意,“幕后”仍然使用promises,但它使代码更易于阅读和理解。

答案 1 :(得分:0)

使用回调

,最简单但可行的解决方案如下:
function getTest(callback) { // add callback
    r.db('chat')
     .table('group_chat')
     .count(r.row('passengers')) // you forgot closing brace here
     .contains(function(passeggers) { 
       return passeggers('nome').eq('pigi') 
     })
     .run()
     .then(function(result) {
       callback(null, result); // call callback with result
     })
     .error(function(err) {
       callback(err, null);  // call callback with error
     });
}

getTest(function(err, result) { // invoke callback
  if (err) throw err;

  console.log(result)
  var test = result; // note: you can use test variable only inside this call
})