2017-10-15 2 views
0

J'ai un objet qui représente un tableau de filtres. n'importe quel objet dans le tableau a id et value. Maintenant, je veux générer à partir de ce tableau chaîne de requête:Générer une chaîne de requête avec ramda

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

la sortie hsould être ressembler à ceci:

/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 

maintenant comment générer requête imbriquée comme celui-ci avec Ramda?

Répondre

2

Personnellement, j'utiliserais simplement une bibliothèque existante pour cela (il y en a beaucoup, recherche npm pour query string). Si vous deviez le faire vous-même en utilisant particulièrement ramda si:

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)