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