2014-10-09 114 views
2

我有rethinkdb實例,我使用的是nodejs客戶端。Javascript猴子補丁rethinkdb .run

rethinkdb 
    .db(p.rdb_database) 
    .table(p.table) 
    .orderBy({index: 'uidAndDate'}) 
    .filter({}) 
    .run(rethinkdbConnection, function (error, cursor) {...}) 

有沒有辦法給猴子打補丁.run函數? 我要監控的rethinkdb客戶端這樣的 - 添加before功能

rethinkdb 
    .db(p.rdb_database) 
    .table(p.table) 
    .orderBy({index: 'uidAndDate'}) 
    .filter({}) 
    .before(function(error, query, result, next){ 
    console.log('query: ',query); 
    console.log('result: ',result); 
    next(error); 
    }) 
    .run(rethinkdbConnection, function (error, cursor) {...}) 

回答

2

可以猴修補它,像這樣的東西

TermBase = r.expr(1).constructor.__super__.constructor.__super__ 
TermBase.run_copy = TermBase.run; 
Termbase.run = function(callback) { 
    console.log("query", this.toString()); 
    this.run_copy(function(error, result) { 
     if (error) { 
      console.log("error", error) 
     } 
     else { 
      console.log("result", result) 
     } 
     callback(error, result) 
    }) 
}) 

但是,這是一種骯髒的。

+0

謝謝!我會試試看! – vodolaz095 2014-10-09 23:34:00