Hi, I can’t pass the last test. Here is my code:
app.post('/api/users', async function(req, res) {
try {
const username = req.body.username;
let created = await UserModel.create({ username });
res.json({
_id: created._id,
username: created.username
});
} catch (error) {
console.error(error)
res.status(500).json('Server erorr...')
}
});
app.get('/api/users', async function(req, res) {
try {
let listUser = await UserModel.find();
res.json(listUser);
} catch (error) {
console.error(error)
res.status(500).json('Server erorr...')
}
});
app.post('/api/users/:_id/exercises', async function(req, res) {
try {
const { description, duration, date } = req.body;
const userId = req.params._id;
let user = await UserModel.findOne({ _id: userId });
let createExercise = await ExerciseModel.create({
userId,
description,
duration,
date: date ? date : new Date()
})
res.json({
_id: userId,
username: user.username,
...(createExercise.date && { date: createExercise.date.toDateString() }),
duration: createExercise.duration,
description: createExercise.description
});
} catch (error) {
console.error(error)
res.status(500).json('Server erorr...')
}
});
app.get('/api/users/:_id/logs', async function(req, res) {
try {
const { from, to, limit } = req.query;
const userId = req.params._id;
let user = await UserModel.findOne({ _id: userId });
let filter = {
userId
};
if (from || to) {
filter.date = {
...(from && { $gte: from }),
...(to && { $lte: to })
}
}
let exercises;
if (limit) {
exercises = await ExerciseModel.find(filter).limit(limit).sort({date: -1});
} else {
exercises = await ExerciseModel.find(filter).sort({date: -1});
}
let log = exercises.map((ex) => ({
description: ex.description,
duration: ex.duration,
...(ex.date && { date: ex.date.toDateString() })
}))
res.json({
_id: userId,
username: user.username,
...(from && { from: (new Date(from)).toDateString() }),
...(to && { to: (new Date(to)).toDateString() }),
count: log.length,
log
});
} catch (error) {
console.error(error)
res.status(500).json('Server erorr...')
}
});