1

I have some JSON I'm passing into Node.js and I'm trying to parse through it and display it on the page. However, after searching around on Stack Overflow and trying out various solutions (currently reading this), I'm receiving this error in return:

TypeError: D:\Programming\node\yale\views\index.jade:10
    8|          //- p= post.comments[1].data
    9|          each comment in post.comments
  > 10|                 each text in comment.data
    11|                     p= text.from.name
    12| 
    13| 

Cannot read property 'length' of undefined
    at $$l (eval at <anonymous> (D:\Programming\node\yale\node_modules\jade\lib\jade.js:172:8), <anonymous>:122:31)
    at $$l (eval at <anonymous> (D:\Programming\node\yale\node_modules\jade\lib\jade.js:172:8), <anonymous>:153:4)
    at eval (eval at <anonymous> (D:\Programming\node\yale\node_modules\jade\lib\jade.js:172:8), <anonymous>:160:4)
    at eval (eval at <anonymous> (D:\Programming\node\yale\node_modules\jade\lib\jade.js:172:8), <anonymous>:301:4)
    at eval (eval at <anonymous> (D:\Programming\node\yale\node_modules\jade\lib\jade.js:172:8), <anonymous>:311:21)
    at res (D:\Programming\node\yale\node_modules\jade\lib\jade.js:173:38)
    at Object.exports.render (D:\Programming\node\yale\node_modules\jade\lib\jade.js:269:10)
    at Object.exports.renderFile (D:\Programming\node\yale\node_modules\jade\lib\jade.js:305:18)
    at View.exports.renderFile [as engine] (D:\Programming\node\yale\node_modules\jade\lib\jade.js:290:21)
    at View.render (D:\Programming\node\yale\node_modules\express\lib\view.js:76:8)

Here's my JSON:

[
    {
        "id": "362285220481827_740014816042197",
        "from": {
            "id": "1677018201",
            "name": "ABC"
        },
        "message": "Yo!",


        "comments": {
            "data": [
                {
                    "id": "740018622708483",
                    "from": {
                        "id": "100003969443486",
                        "name": "XTZ"
                    },
                    "message": "Hey!",
                    "can_remove": false,
                    "created_time": "2014-06-14T17:18:48+0000",
                    "like_count": 0,
                    "user_likes": false
                }
            ],
            "paging": {
                "cursors": {
                    "after": "NzQ0MTMxNTc1NjMwNTIx",
                    "before": "NzQwMDE4NjIyNzA4NDgz"
                }
            }
        }
    }
]

Index.jade

extends layout

block content
    each post in datas 
        div(id='post')
            p= post.from.name
            p= post.message
            //- p= post.comments[1].data
            each comment in post.comments
                each text in comment.data
                    p= text.from.name

Index.js

var express = require('express');
var router = express.Router();
var fs = require('fs');
var path = require('path');

var file = '../public/sample.json';
var filePath = path.join(__dirname, '../public/sample.json');
    /* GET home page. */
router.get('/', function(req, res) {
    fs.readFile(filePath, 'utf8', function(err, data) {
        if(err) {
            console.log(err);
        } else {
            data = JSON.parse(data);
            res.render('index', { datas: data });
            console.log(data);
        }

    });

});

module.exports = router;

My question is, how do I retrieve the data inside the Comments object? Thanks for your help!

2 Answers 2

2

I think you want to iterate the posts data, not the object itself.

each comment in post.comments.data
  p= comment.from.name
Sign up to request clarification or add additional context in comments.

Comments

1

comments isn't an array in your JSON structure, it's an object. Try making it an array.

1 Comment

How do I go about doing that?

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.