rethinkdb&nodejs:将结果保存在var

有可能将rethinkdb的结果查询保存在一个variables中?

喜欢这个??

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; }) 

如果您不喜欢使用promise,并且正在使用最新版本的ECMAScript,则可以使用async / await ,它提供了语法糖,使您可以像编写同步代码一样编写asynchronous代码。

你可以像这样重写你的例子:

 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; } 

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

最简单的工作解决scheme将如下所示,使用callback

 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 })