所以我有一个动态查询,我想知道有没有办法跟踪它为跟踪目的而准确执行的语句?
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 :(得分: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查询