diff --git a/src/postgrest.js b/src/postgrest.js index 58e4432..9ce8460 100644 --- a/src/postgrest.js +++ b/src/postgrest.js @@ -162,29 +162,32 @@ export default (api_root, auth={}) => { // Simply build query string by hand. if (options.queries) { // build the query string - let _query_string = options.queries.map(query => { - // prepare the query kv pair and optional operator - let k = query.label - let v = query.value - let op = query.op - - // return early if v is empty - if (typeof v == 'undefined' || (!v && v !== 0)) - return undefined - - if (op == 'like') - v = `*${v}*` - else if (op == 'like.right') { - v = `${v}*` - op = 'like' - } else if (op == 'in') - v = `(${v.join(',')})` - else if (k == 'and') { - v = '(' + v.filter(sub_query => sub_query.value == 0 || sub_query.value).map(sub_query => `${sub_query.label}.${sub_query.op}.${typeof sub_query.value == 'function' ? sub_query.value() : sub_query.value}`).join(',') + ')' - } - - return {k: k, v: op ? `${op}.${v}` : v} - }).filter(query => typeof query != 'undefined').map(query => query.k + '=' + encodeURIComponent(query.v)).join('&') + let _query_string = options.queries + .filter(query => typeof query != 'undefined') + .map(query => { + // prepare the query kv pair and optional operator + let k = query.label + let v = query.value + let op = query.op + + // return early if v is empty + if (typeof v == 'undefined' || (!v && v !== 0)) + return undefined + + if (op == 'like') + v = `*${v}*` + else if (op == 'like.right') { + v = `${v}*` + op = 'like' + } else if (op == 'in') + v = `(${v.join(',')})` + else if (k == 'and') { + v = '(' + v.filter(sub_query => sub_query.value == 0 || sub_query.value).map(sub_query => `${sub_query.label}.${sub_query.op}.${typeof sub_query.value == 'function' ? sub_query.value() : sub_query.value}`).join(',') + ')' + } + + return {k: k, v: op ? `${op}.${v}` : v} + }) + .map(query => query.k + '=' + encodeURIComponent(query.v)).join('&') // append query string to url if necessary if (_query_string)