Должно быть, у меня что-то не хватает, но вот моя проблема. У меня есть коллекция документов, которая содержит поля «title» и «content».Доступ к содержимому запроса БД
Когда я перейти к конкретному URL, скажем,
http://localhost:3000/document/33ea5676-4f8f-4fe4-99d5-fe094556933d
Я хватаю документ _id из URL, сохранить его с помощью Session.set('docID',_id)
и затем хотите, скажем, отобразить название документа. У меня есть шаблон:
<template name='document'>
<h2>My document is called {{document.title}}</h2>
</template>
, а затем в моем файле client.js, у меня есть:
Template.document.document = function() {
doc = Documents.findOne({'_id':Session.get('docID')});
return doc;
}
Но это не работает: я получаю сообщение об ошибке по линии:
Cannot read property 'title' of undefined
Поскольку, конечно, перед доступом к полю документ должен быть извлечен из базы данных. Если я позвоню,
Template.document.document().title
С консоли я получаю заголовок. Я пробовал сделать конкретную функцию заголовка,
Template.document.title = function() {
doc = Documents.findOne({'_id':Session.get('docID')});
return doc.title;
}
Но это страдает той же проблемой. Кажется, что существует отставание между тем, когда база данных извлекает запись, и тем временем вызов doc.title
вызывает ошибку.
Должно быть, я должен упустить что-то принципиальное. Благодарю.
дубликат http://stackoverflow.com/questions/10167464/meteor-rendering-template-with-a-document-from-a-collection Короткий ответ: 'return doc && doc.title' – danny
Это сделало. Благодарю. –