Repository metrics
- Stars
- (8,015 stars)
- PR merge metrics
- (Avg merge 6d 22h) (2 merged PRs in 30d)
Description
Hi, I'm getting crazy with this but for some reason the decoder function seems to never be called. Here is my code:
router.get('/testqs', function(req, res) {
const result = qs.parse(req.query, {
decoder: function (str) {
let result: any
const keywords: any = {
true: true,
false: false,
null: null,
undefined: undefined
}
if (str in keywords) {
result = keywords[str]
} else {
const parsed = parseFloat(str)
if (isNaN(parsed)) {
result = str
} else {
result = parsed
}
}
console.log(str, result)
return result
}
})
res.json(result)
})
When I send a request:
GET {{host}}{{api}}/testqs?maintYear=2018&maintMonth=5&fields[]=id&fields[]=regname&fields[]=price¬Renewed=true
I get the following result:
{
"maintYear": "2018",
"maintMonth": "5",
"fields": [
"id",
"regname",
"price"
],
"notRenewed": "true"
}
To summarize, evrrything seems to work properly except that the decoder function seems to never be called (and of course, I don't have any console.log output from inside the function).
I noticed that someone in the following comment (https://github.com/ljharb/qs/issues/91#issuecomment-358708095) that someone is saying that this doesn't seem to work for him but not sure if he doesn't like the result or if he encounters the same problem as I do.
Any idea regarding what could go wrong ?
Thanks