我有一个代表过滤器数组的对象。数组中的任何对象都有id
和value
。现在我想从这个数组生成查询字符串:
{ filtered: '[{"id":"tags","value":["soap"]}]',
limit: '10',
offset: '0',
sorted: '[]' }
输出应如下所示:
/item?filtered=%5B%7B%22id%22%3A%22tags%22%2C%22value%22%3A%5B%22soap%22%5D%7D%5D&limit=10&offset=0&sorted=%5B%5D
现在如何使用ramda生成这样的嵌套查询?
答案 0 :(得分:2)
就我个人而言,我只是使用现有的库(有许多,query string
搜索npm)。如果你自己使用特别是ramda自己做的话:
const qs = R.compose(
s => `?${s}`, // Prepend a ?
R.join('&'), // Join each segment of the query with '&'
R.map(R.join('=')), // Join the key-value pairs with '='
R.map(R.map(encodeURIComponent)), // encode keys and values
R.toPairs, // convert the object to pairs like `['limit', 5]`
)(input)