Показать коллекцию Mongodb в нефритовом шаблоне

Я новичок в node.js и mongodb. Я установил коллекцию mongodb под названием «статья». Я хотел бы отобразить все статьи этой коллекции в нефритовом шаблоне. Я использовал этот код:

сервер.js:

articles: db.article.find()

index.jade:

-for article in articles
      .row
        .twelve.columns
          .panel
            li= article.text

Нефрит действительно простой, но это изменится. Дело в том, что когда я запускаю этот код, список в нефритовом шаблоне пуст и ничего не отображается. Похоже, что переменная 'articles' пуста.

Кто-нибудь знает, как я могу заставить это работать?

Спасибо


person Guillaume le Floch    schedule 18.08.2012    source источник


Ответы (2)


.find() является асинхронным. вы используете его синхронно.

function(req, res, next) {
  db.articles.find().toArray(function(err, articles) {
    res.render('page', {
      articles: articles
    }
  })
}
person Jonathan Ong    schedule 18.08.2012

пытаться:

- console.log(articles)

В вашем шаблоне выяснить, пуст ли массив!

person 3on    schedule 18.08.2012
comment
Я пробовал, в консоли у меня такой результат: '{ _oncursor: { get: [Function], put: [Function] } }' - person Guillaume le Floch; 18.08.2012
comment
какой модуль вы используете для доступа к вашему mongodb? - person 3on; 18.08.2012
comment
вы должны быть что db здесь? вам требовался mongodb-native или mongoose или? - person 3on; 18.08.2012
comment
о да, mongodb-native, я установил страницу входа/выхода из системы, связанную с другой коллекцией моей базы данных, и все работает нормально. Я думаю, что моя проблема исходит отсюда «articles: db.article.find ()», но я действительно не знаю, почему и как это можно сделать по-другому. - person Guillaume le Floch; 18.08.2012
comment
console.log на стороне сервера и убедитесь, что у вас есть данные. - person 3on; 18.08.2012
comment
попробуйте на стороне сервера console.log выяснить, есть ли у вас данные. - person 3on; 18.08.2012
comment
У меня есть это: [объект Объект] - person Guillaume le Floch; 18.08.2012
comment
Взгляните на util.inspect, вот пример оболочки github.com/dotcloud/express-on-dotcloud/blob/master/app/ - person 3on; 18.08.2012