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!
I think you want to iterate the posts data, not the object itself.
each comment in post.comments.data
p= comment.from.name
comments
isn't an array in your JSON structure, it's an object. Try making it an array.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.