Reputation: 67
{
"_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
Upvotes: 0
Views: 104
Reputation: 111404
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.
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.
To access deep structures you can use:
Upvotes: 1