RethinkDB动态查询跟踪

时间:2016-09-15 07:26:52

标签: rethinkdb reql

所以我有一个动态查询,我想知道有没有办法跟踪它为跟踪目的而准确执行的语句?

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

1 个答案:

答案 0 :(得分: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查询