javascript - Jade when passing object/array from router get error -



javascript - Jade when passing object/array from router get error -

i'm exploring jade view engine in node , spent 3 hours not beingness able pass object (the response database) jade view without getting error.

from router all array objects:

var router = express.router(); router.get('/all', function(req, res){ db.findall().then(function(all){ res.render("index", { creators: }); }); });

jade view:

doctype html html head title jade template body .comment_list each el in creators p= el.creator

as see it's pretty simple. i've seen more 20 examples of using jade , same , error:

> typeerror: index.jade:7 5| body 6| .comment_list > 7| each el in creators 8| p= el.creator cannot read property 'length' of undefined

until tried check if(typeof(creators) != "undefined") before each el in creators , guess what... magic happened. error disappeared.

i'm writing post reference people struggling same issuse , i'd inquire reason error , why in documentation of jade mentioned 1 should create such check undefined before iterating through collection?

it mutual pattern in jade check variable's existence before trying operate on it.

from jade documentation on iterations:

the object or array iterate on plain javascript can variable or result of function phone call or else.

- var values = []; ul each val in values.length ? values : ['there no values'] li= val

under hood, jade using standard javascript when phone call each.

so trying phone call each on doesn't exist trying do:

for(var i=0; < undefined.length; i++) { ... }

which errors because length isn't real property of undefined.

totally understand frustration, dealing undefined info pains lot of people in javascript.

javascript node.js express jade

Comments

Popular posts from this blog

Delphi change the assembly code of a running process -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -

C++ 11 "class" keyword -