2017-10-15 85 views
0

我有一個代表過濾器數組的對象。陣列中的任何對象都有idvalue。現在我想從這個數組生成查詢字符串:用ramda生成查詢字符串

{ filtered: '[{"id":"tags","value":["soap"]}]', 
    limit: '10', 
    offset: '0', 
    sorted: '[]' } 

輸出hsould將類似於下面:

/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嵌套查詢?

回答

2

就我個人而言,我只是使用現有的圖書館(有很多,搜索npm爲query string)。如果你自己做,特別是使用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)