mardi 24 février 2015

Failure jade with json - Cannot read property 'length' of undefined - I can't find what's wrong

I'm working on a project, in Node.js, express module, jade files, MongoDB-Mongoose and more.. I've a problem to implement json details from the database to the jade page.


I tried to figure out the problem, unsuccessfully. I would like someone to help me find and fix it. Thanks.


That's the Error message:



TypeError: /Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/views/index.jade:66
64| div(id="archive-rooms-container" class="row panel thumbnail-row")
65| h4= 'Musical Projects'
> 66| each project, index in projects
67| div(class='col-md-3 rowSpace')
68| ul(class="room-details")
69| li

Cannot read property 'length' of undefined
at jade_debug.unshift.lineno (eval at <anonymous> (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:174:8), <anonymous>:618:31)
at eval (eval at <anonymous> (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:174:8), <anonymous>:815:4)
at eval (eval at <anonymous> (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:174:8), <anonymous>:955:22)
at res (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:175:38)
at Object.exports.render (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:300:10)
at Object.exports.renderFile (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:336:18)
at View.exports.renderFile [as engine] (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/jade/lib/jade.js:321:21)
at View.render (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/express/lib/view.js:93:8)
at EventEmitter.app.render (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/express/lib/application.js:530:10)
at ServerResponse.res.render (/Users/itzhak/Desktop/Development/Porvivo/AWSporvivo/node_modules/express/lib/response.js:933:7)



Jade code:




each project, index in projects
div(class='col-md-3 rowSpace')
ul(class="room-details")
li
a(href="/projects/" + project.sessionId id=project.sessionId)
h3(style='margin:0 0 3px')= project.projectName
- var playerNames = [];
- for(var playerIndex in project.players) playerNames.push(room.players[playerIndex].name);
li
for playerName in playerNames
a(href="../" + playerName)= playerName
a(href="/projects/" + project.sessionId id=project.sessionId): img(src=project.img class="img-responsive")



Js code (on client side):




function loadProjects() {
$.getJSON('/projects/info', function( data ) {
console.log(JSON.stringify(data));
});
}
$( document ).ready(function() {
loadProjects();
setInterval(loadProjects, 10000);
});



app code: (node.js)




var express = require('express'),
router = express.Router(),
Project = require('../schemas/project'),
projects = [];

Project.find().lean().exec(function(err, items) {
if (err) {
console.log('* ERROR!!! : ' + err);
} else {
projects = items;
console.log('* SUCCESS : ' + JSON.stringify(projects));
}
});

router.get('/info', function(req, res) {
res.json({projects: projects});
});

module.exports = router;


Thanks a lot!


Itzhak.


Aucun commentaire:

Enregistrer un commentaire