2013-06-04 3 views
2

Я новичок в узел и MongoDB и пытаюсь сделать запрос к базе данных в шаблоне, но я получаю ошибку, что свойство не определено:извлечение данных из MongoDB в шаблоне нефрита

Cannot read property 'firstname' of undefined 

Вот мой index.js файл:

var dburl = 'localhost/olpdb'; 


var collections = ['users']; 


var db = require('mongojs').connect(dburl, collections); 

var currentUsers = db.users.find(); 

exports.index = function(req, res){ 
    res.render('index', currentUsers); 
}; 

В index.jade шаблона, у меня есть:

#{currentUsers.firstname} 

Я опрошена база данных отдельно и знаю, что есть запись:

> db.users.find() 
{ "firstname" : "andy", "lastname" : "johnson", "email" : "[email protected]", "_id" : ObjectId("51adf8a8c58996cf0c000001") } 

Может ли кто-нибудь помочь мне с тем, что я делаю неправильно? Я пытаюсь передать объект в шаблон, чтобы я мог извлечь данные.

ответ

0

В вашем коде currentUsers, вероятно, является объектом API (запрос или аналогичный). Для того, чтобы использовать результат в запросе, вы должны использовать функцию обратного вызова:

exports.index = function(req, res){ 
    db.users.find(function(err, currentUsers) { 
    res.render('index', { 
     currentUsers: currentUsers 
    }); 
    }); 
}; 

Теперь вы можете использовать currentUsersмассив из шаблона Джейд:

#{currentUsers[0].firstName} 
+0

Это дает мне ошибку: Не удается прочитать property 'firstname' of null – babbaggeii

+0

Исправлены опечатки в коде. – rvidal

+0

Отлично, спасибо большое – babbaggeii

Смежные вопросы