2017-08-26 102 views
1

它可以將rethinkdb的結果查詢保存在變量中嗎?rethinkdb&nodejs:將結果保存在var

喜歡這個??

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

回答

0

如果你不喜歡使用的承諾,並使用最新版本的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; 
} 

注意,「幕後」,這仍然使用了承諾,但它使代碼更容易閱讀和理解。

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