0

所以我有一个动态查询,我想知道有没有办法跟踪它究竟执行了什么语句以用于跟踪目的?

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

1 回答 1

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/

PS 此查询尚未按预期工作,因为我仍在弄清楚如何进行动态 rethinkdb 查询

于 2016-09-15T07:54:09.203 回答