This is the last test I need to pass, I’m not sure what the issue might be.
My code:
app.get("/api/:date", (req, res) => {
let date = req.params.date
if (!date) {
date = new Date()
let unix = date.toUTCString()
let utc = date.getTime()
res.send({unix, utc})
} else {
let unix = Number(date) ? +date : new Date(date).getTime()
let utc = new Date(unix).toUTCString()
if (unix) {
res.send({unix, utc})
} else {
res.send({ error : "Invalid Date" })
}
}
})
You’ve used !date to try to handle an empty date parameter.
A call to /api/:date by definition has a date parameter (i.e. this call will only be made if a date parameter is supplied by the user).
So, in the absence of a date parameter, what are you left with?
You also have the values for unix and utc back-to-front inside that conditional statement.
Thank you, I changed the conditional statement to this
if (!date || date === '') {
date = new Date()
let unix = date.getTime()
let utc = date.toUTCString()
res.send({unix, utc})
}
Looks like I’m still not getting it. When I try to test this statement, I just leave out the date portion in the link and get Cannot GET /api/. I think I have the wrong idea about what an empty date parameter means.
If a call is made to /api/:date, it’s because the user has supplied a value after /api/ which can be collected to populate req.params.date. If no value is supplied by the user, what api call is made?
Ah yes, if you suffix the parameter with a ? it makes it optional, so you could make your code work that way.
Basically, there are two approaches:
Make the call to /api/:date?. Making the parameter optional means that you can handle a !date condition inside this GET request. If you omit the ?, this route will not be called in the event that a parameter is not supplied.
Keep it as /api/:date and make a separate call to /api, to handle no parameter.
So I guess you can make your code work simply by adding that one character, now that you’ve switched your values around.
EDIT: I see you’ve gone for option 2 (before I wrote this reply), but if you comment out that /api GET request and just add a ? to your other GET request, you’ll see that you pass that way too.