2012-05-22 5 views
1

У меня есть шаблон нефрита, где я распечатываю свойства из объекта mongoose. Объект имеет свойства, которые были заполнены функцией dbref-типа заполнения мангуста. Когда шаблон создает, я получаю глупость.Jade отображает неожиданные значения в шаблонах для «заселенных» свойств мангуста

упрощенный пример:

в маршруте

User.findById(req.params.user, function(err, user){ 
    res.render('training', {training:user.training}); 
}).populate('training.details'); 

в шаблоне:

a.training-link(href='/training/#{training.details.id}') ... 

в браузере:

<a href="/training/O &gt;°Cm5�" class="training-link">...</a> 

В первый раз, когда страница загружается , где Я ожидал бы регулярную шестнадцатеричную строку mongo (4fac4e5f379cb0a68100015d). Я получаю что-то вроде «O > ° Cm5 ». Это происходит только при загрузке первой страницы после перезапуска сервера. Все последующие загрузки страниц отображают как ожидалось.

Что происходит здесь и как я могу это исправить?

Спасибо.

+0

Два вопроса: 1. «заполнять» [не является рекурсивным] (https://github.com/LearnBoost/mongoose/issues/601). В вашем примере вы заполняете 'user.training'. Вы также заполнили 'user.training.details'? 2. Вы уверены, что заполнение заполнено перед рендерингом? Почему бы не сделать рендеринг в обратном вызове из 'populate', а не обратный вызов из' findById'? – Nate

+0

Вы абсолютно правы. Я был неаккуратен в своей транскрипции. он должен читать '.populate ('training.details')'. Я отредактировал свой вопрос, чтобы отразить это. – smabbott

ответ

0

Это немного неловко, но я это понял.

В нашем приложении есть логическая ветвь, которая по разным причинам заставляет код в моем вопросе выше работать во второй и последующих загрузках, но не на первом. Другая ветка, которая работает только при первом загрузке, делает аналогичный запрос, но я не добавил populate('training.details'). Я считаю, что бессмысленная строка O¬N_7°¦� является результатом звонка .id на объект ObjectId, а не на заполненный training.details.

Похож, что нам нужно реорганизовать некоторый код.

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