0
{
    "_id" : ObjectId("587f5455da1da85d2bd01fc5"),
    "totalTime" : 0,
    "lastUpdatedBy" : ObjectId("57906bf8f4add282195d0a88"),
    "createdBy" : ObjectId("57906bf8f4add282195d0a88"),
    "workSpaceId" : ObjectId("57906c24f4add282195d0a8a"),
    "locationId" : ObjectId("5790629c841f1a9913b12104"),
    "projectId" : ObjectId("57906d33f4add282195d0aa2"),
    "title" : "asdf asdfasdf",
    "subTitles" : [
        {
            "childrensTitle" : "fffffffffffff",
            "createdBy" : ObjectId("57906bf8f4add282195d0a88"),
            "lastUpdatedBy" : ObjectId("57906bf8f4add282195d0a88"),
            "totalTime" : 0,
            "created_at" : ISODate("2017-01-18T11:41:32.974Z"),
            "subTitles" : [
                {
                    "childrensTitle" : "Ufffffff",
                    "createdBy" : ObjectId("57906bf8f4add282195d0a88"),
                    "lastUpdatedBy" : ObjectId("57906ce1f4add282195d0a96"),
                    "totalTime" : 0,
                    "created_at" : ISODate("2017-01-18T11:41:37.151Z"),
                    "subTitles" : [
                        {
                            "childrensTitle" : "date n time",
                            "createdBy" : ObjectId("57906bf8f4add282195d0a88"),
                            "lastUpdatedBy" : ObjectId("57906bf8f4add282195d0a88"),
                            "totalTime" : 0,
                            "created_at" : ISODate("2017-01-18T11:41:40.716Z"),
                            "subTitles" : [ ],
                            "_id" : ObjectId("587f5474da1da85d2bd01fcb")
                        }
                    ],
                    "_id" : ObjectId("587f5471da1da85d2bd01fca")
                }
            ],
            "_id" : ObjectId("587f546cda1da85d2bd01fc9")
        }
    ],
    "created_at" : ISODate("2017-01-18T11:41:09.301Z"),
    "__v" : 3
}

I am trying to print totalTime of each level but I am only able to print it up to 2 layers… after that it is undefined. For example:

console.log(mainTitle[0].subTitles[req.body.index].subTitles[req.body.index].subTitles[req.body.index].totalTime) // undefined
6
  • Your json is not valid Commented Jan 19, 2017 at 9:03
  • you can say nested/embed array of same type(rescursive) !! @ricky Commented Jan 19, 2017 at 9:15
  • Please tell me where i am wrong :( Commented Jan 19, 2017 at 9:17
  • ObjectId("587f5455da1da85d2bd01fc5") this is valid in MongoDB but if you talk about JSON, It's invalid data type. It should be like "587f5455da1da85d2bd01fc5" Commented Jan 19, 2017 at 9:17
  • yes you are right its mongodb one!! Commented Jan 19, 2017 at 9:18

1 Answer 1

1

This is not JSON. This is a JavaScript representation of BSON from MongoDB, which just happens to use unnecessarily quoted object keys.

You would need to define ISODate() and ObjectId() functions (that you can take from Mongo driver or Mongoose) and use them to parse the calls to those functions. Otherwise you will get errors because those functions are undefined.

And you cannot use JSON.parse() to parse it because this is not JSON.

Update

When you access:

mainTitle[0].subTitles[req.body.index].subTitles[req.body.index].subTitles[req.body.index].totalTime

I would simplify it as:

var i = req.body.index;
mainTitle[0].subTitles[i].subTitles[i].subTitles[i].totalTime

but that's just for readability.

I would test in one nesting level at a time:

var i = req.body.index;
console.log(i);
console.log(mainTitle);
console.log(mainTitle[0]);
console.log(mainTitle[0].subTitles);
console.log(mainTitle[0].subTitles[i]);
console.log(mainTitle[0].subTitles[i].subTitles);
console.log(mainTitle[0].subTitles[i].subTitles[i]);
console.log(mainTitle[0].subTitles[i].subTitles[i].subTitles);
console.log(mainTitle[0].subTitles[i].subTitles[i].subTitles[i]);
console.log(mainTitle[0].subTitles[i].subTitles[i].subTitles[i].totalTime);

Not pretty but sometimes it's a best way to narrow down the problem.

Modules that can help

To access deep structures you can use:

Sign up to request clarification or add additional context in comments.

5 Comments

Thank You all for your valuable suggestions !!
i am not getting any error !! i just could not console "totalTime" field.....but i am able to console "childrensTitle" field please give any suggestions on that. i am using #MeanStack framework
@TushBedva See my updated answer for more suggestions.
i have tried this var i = req.body.index; console.log(i); console.log(mainTitle); console.log(mainTitle[0]); console.log(mainTitle[0].subTitles); console.log(mainTitle[0].subTitles[i]); console.log(mainTitle[0].subTitles[i].subTitles); console.log(mainTitle[0].subTitles[i].subTitles[i]); yes i did this too but i am able get up to console.log(mainTitle[0].subTitles[i].subTitles[i]); (2 layers) .... after that it is consoling undefined if i keep totalTime. but if i dont keep totalTime it is coming !!
@TushBedva The answer is written by rsp, not by me.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.