Back End Development and APIs Projects - Exercise Tracker

Tell us what’s happening:

Hi Community,

i’m sticking with this last exercise a few weeks now, also wrote the entire code from scratch again, but i want that be done really hard now, i’ts the last project in this course to finally get my degree :slight_smile: and i hate unfinished things.

Whats going on is a GET request and the response should deliver a object with correct properties fetched from a database (mongoose).

The exercise which fails says:
The date property of any object in the log array that is returned from GET /api/users/:id/logs should be a string. Use the dateString format of the Date API.

So, i build me a logger specially for that, it logs me
and every date property in the date array HAVE type String - says the console.

I don’t know how to get over it now… Of course it’s something wrong in the code i wrote, but i cant find it.

Here is the code snippet for the task (removed all comments for readability, you can read them in the replit):

app.get(‘/api/users/:_id/logs’, function(req, res){

let userID = req.body[“_id”] || req.params._id,
from = req.query.from,
to =,
limit = req.query.limit;

if (from) {
from = new Date(from);
from = from.toDateString();
if (from == “Invalid Date”) {
res.status(500).json(“Invalid ‘from’ Date”);

if (to) {
to = new Date(to);
  to = to.toDateString();
if (to == "Invalid Date") {
  res.status(500).json("Invalid 'to' Date");

if (limit) {
  limit = parseInt(limit);
  if (isNaN(limit)) {
    res.json("Invalid 'Limit'");

User.findOne({ “_id” : userID }, (error, data) => {

if (error || !data) {
  res.status(500).json("Incorrect UserID");
} else {
  const objToReturn = { "_id" : userID, "username" : data.username}, searchObj = { "username" : data.username }; dateSearchObj = {};

  if (from) {
      objToReturn.from = from;
    dateSearchObj["$gte"] = from;

    if (to) { = to;   
      dateSearchObj["$lt"] = to;
    } else {
      const event = new Date();
      dateSearchObj["$lt"] = event.toDateString();

  if (to) { = to;
    dateSearchObj["$lt"] = to;
    dateSearchObj["$gte"] = new Date("1970-01-01");

  if (to || from) { = dateSearchObj;

  Exercise.count(searchObj, (error, data) => {
    if (error || !data) {
      res.status(500).json("Invalid Date to search in exercise log");

    let exerciseCounter = data;
    if (limit) {
      if(limit < exerciseCounter){
          exerciseCounter = limit;

    objToReturn["count"] = exerciseCounter;
    Exercise.find(searchObj, (error, data) => {

      if (error || !data) return console.log(error);

      let logArray = [], exerciseObj = {}, counter = 0;

      data.forEach(function(item) {
        counter += 1;
        if (counter <= limit || !limit) {
          exerciseObj = {};
          exerciseObj.description = item.description;
          exerciseObj.duration = item.duration;
      objToReturn.log = logArray;


Thank you much for your time!
greets from Vienna, Austria

Your project link(s)

Here is the code:
Invitation to collaborate on Replit - Replit

Your browser information:

User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.36

Challenge: Back End Development and APIs Projects - Exercise Tracker

Link to the challenge:

dateSearchObj[“$lt”] = to;

You can try using $lte operator instead of the $lt for the date filter.


Also, these two fields in your code are not part of the expected output’s fields:

objToReturn.from = from; = to;

which is adding these to the log’s output:

  from: 'Sat Jul 23 2022',
  to: 'Thu Jul 28 2022',

The log’s output should have only these fields as shown below:


  username: "fcc_test",
  count: 1,
  _id: "5fb5853f734231456ccb3b05",
  log: [{
    description: "test",
    duration: 60,
    date: "Mon Jan 01 1990",

Another issue is that the console.log debugging code at this point in your code when you specify the from and to query parameters for the GET request:

Exercise.count(searchObj, (error, data) => { ...

prints this and that doesn’t match the from and to dates: { '$gte': 1970-01-01T00:00:00.000Z, '$lt': 'Thu Jul 28 2022' }

Thank you so much, prasadsaya!

I’m almost a litte bit angry to me that i didnt see that…^^
tunnel vision i would say.

Thanks & greets from Vienna

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.