2016-09-15 100 views
0

所以我有一個動態查詢,我想知道是否有一種方法來跟蹤哪些語句正是它的執行追蹤目的?RethinkDB動態查詢追蹤

r.db('appname').table('food') 
    .hasFields({'fruits': {'secondary': true}}) 
    .filter(function(row) { 
     var userDefaultCondition = []; 
     _.forEach(params.userDefault, function(service) { 
      userDefaultCondition.push(row('fruits')('favorite').match(service)); 
     }); 

     var userRequestedCondition = []; 
     _.forEach(params.userRequested, function(service) { 
      userRequestedCondition.push(row('fruits')('favorite').match(service)); 
     }); 

     return r.and(
       row('inventory')('status').match('AVAILABLE') 
     ).and(
      r.or(
       userDefaultCondition 
      ).and(
       r.or(
       userRequestedCondition 
      ) 
      ) 
     ) 
    }) 

回答

0

我想通了,跟蹤查詢,您需要將其分配給一個變量和應用toString()

var query = r.db('appname').table('food') 
.hasFields({'fruits': {'secondary': true}}) 
.filter(function(row) { 
    var userDefaultCondition = []; 
    _.forEach(params.userDefault, function(service) { 
     userDefaultCondition.push(row('fruits')('favorite').match(service)); 
    }); 

    var userRequestedCondition = []; 
    _.forEach(params.userRequested, function(service) { 
     userRequestedCondition.push(row('fruits')('favorite').match(service)); 
    }); 

    return r.and(
      row('inventory')('status').match('AVAILABLE') 
    ).and(
     r.or(
      userDefaultCondition 
     ).and(
      r.or(
      userRequestedCondition 
     ) 
     ) 
    ) 
}); 

//trace query 
console.log(query.toString()); 

//run query 
query.run() 
.then(function(res) { 
    console.log(res); 
}).error(function(err){ 
    console.log(err); 
}); 

感謝:http://www.ronniesan.com/viewing-a-dynamically-generated-reql-query/

P.S此查詢沒有按預期工作,因爲我仍然搞清楚如何做到動態rethinkdb查詢