File tree

2 files changed

+60
-17
lines changed

2 files changed

+60
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,41 @@
11
# api-gateway-querystring
22
Utility for parse nested parameters in query strings
3+
4+
5+
To transform plain nested params in object inside querystring:
6+
7+
```javascript
8+
event.params.querystring = mapQueryString(event.params.querystring);
9+
10+
// event.params.querystring = {
11+
// "person[0][name]": "Mark",
12+
// "person[0][age]": 32,
13+
// "person[1][name]": "Luke",
14+
// "person[1][age]": 26,
15+
// "contacts[home][phone]": "+3333333333",
16+
// "contacts[home][email]": "[email protected]",
17+
// "contacts[home][twitter]": "@username"
18+
// }
19+
//
20+
// become:
21+
//
22+
// event.params.querystring = {
23+
// "person": [{
24+
// "name": "Mark",
25+
// "age": 32
26+
// }, {
27+
// "name": "Luke",
28+
// "age": 26
29+
// }],
30+
// "home": {
31+
// "phone": "+3333333333",
32+
// "email": "[email protected]",
33+
// "twitter": "@username"
34+
// }
35+
// }
36+
37+
38+
```
39+
40+
41+
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,32 @@ var mapQueryString = require('../index');
22

33
describe('Query String', () => {
44

5-
test('Mapper', () => {
5+
test('Readme.md', () => {
66

77
var querystring = {
8-
'legs[0][departure_airport]': 'MXP',
9-
'legs[0][arrival_airport]': 'TIA',
10-
'legs[0][outbound_date]': '2017-03-29',
11-
'legs[1][departure_airport]': 'oiue',
12-
'legs[1][arrival_airport]': 'csdjn',
13-
'legs[1][outbound_date]': '2017-03-21',
14-
'person[child][name]': 'oiue',
15-
'person[child][age]': 'csdjn',
16-
'person[parent][name]': '2017-03-21',
17-
'adult': 1,
18-
'search_type': 'oneway'
8+
"person[0][name]": "Mark",
9+
"person[0][age]": 32,
10+
"person[1][name]": "Luke",
11+
"person[1][age]": 26,
12+
"contacts[home][phone]": "+3333333333",
13+
"contacts[home][email]": "[email protected]",
14+
"contacts[home][twitter]": "@username"
1915
};
2016

2117
var mapped = mapQueryString(querystring);
2218

23-
expect(mapped.legs[1].departure_airport).toBe('oiue');
24-
expect(Object..toString.call(mapped.legs)).toBe('[object Array]');
25-
expect(Object..toString.call(mapped.legs[0])).toBe('[object Object]');
26-
expect(mapped.person.child.name).toBe('oiue');
27-
expect(mapped.legs[0].outbound_date).toBe('2017-03-29');
19+
expect(Object..toString.call(querystring)).toBe('[object Object]');
20+
expect(Object..toString.call(querystring.person)).toBe('[object Array]');
21+
expect(Object..toString.call(querystring.person[0])).toBe('[object Object]');
22+
expect(Object..toString.call(querystring.contacts)).toBe('[object Object]');
23+
expect(Object..toString.call(querystring.contacts.home)).toBe('[object Object]');
24+
expect(querystring.person[0].name).toBe('Mark');
25+
expect(querystring.person[0].age).toBe(32);
26+
expect(querystring.person[1].name).toBe('Luke');
27+
expect(querystring.person[1].age).toBe(26);
28+
expect(querystring.contacts.home.phone).toBe("+3333333333");
29+
expect(querystring.contacts.home.email).toBe("[email protected]");
30+
expect(querystring.contacts.home.twitter).toBe("@username");
31+
2832
});
2933
});

0 commit comments

Comments
 (0)