我从MongoDB Collection中提取随机文档。然后我试图在HTML中显示该随机文档的所有字段。
我能够很好地获得随机文档,但是当我尝试显示该文档的字段时,它们都是混乱的。这就是我的意思:
Template.hutch.helpers(
{
//function returns one random book from a collection of books
'book': function()
{
return BookList.find(randomBook);
}
}
这将从我的收藏中返回1本随机书。 (我知道(randomBook)不正确,我只是得到了重点。函数有点大,但它从我的书单中返回一个随机元素)
我想以HTML格式显示本书的内容。
当我执行{{book.Title}},{{book.Publisher}},{{book.Etc}}时,值不对齐,因为它每次都会获得一本随机书。 (正如您所料,该函数会随机获取一本书。因此它会获得随机标题,随机发布者等)。我想从同一本书中获取所有信息。
我也知道在帮助函数中你可以调用:return BookList.find()
然后在HTML中,调用{{book 1}}
将返回[Object object]
。
我尝试了{{book 1.Title}}
,{{book[1].Title}}
,{{book(1).Title}}
等等。但这些都不起作用。
我想我要问的是:如何从书籍列表中获取随机书籍,然后将同一本书的每个字段显示为HTML。
我的项目是尝试在单击按钮时使用随机书籍信息填充表格。所有书籍都存储在数据库中,我想选择一本随机书籍,在HTML表格中显示标题,发布者等。
感谢您的帮助!
答案 0 :(得分:0)
假设您的随机图书文件如下:
{
bookName: "TheRandomBook",
bookAuthors: "RandomAuthor",
bookPublishedYear: 1969,
....
}
helper.js:
由于您只需要一本书,因此使用findOne而不是find,因为findOne
将只返回一个对象,而find
将返回一个光标来迭代对象。
getRandomBook: function(){
return books.findOne();
}
<强> showBooks.html:强>
<htmlTag> {{getRandomBook.bookName}} </htmlTag>
<htmlTag> {{getRandomBook.bookAuthor}} </htmlTag>
<htmlTag> {{getRandomBook.bookbookPublishedYear}} </htmlTag>
答案 1 :(得分:0)
使用#with
设置数据上下文,然后直接使用密钥:
<template name="hutch">
{{#with book}}
Title: {{title}}
Publisher: {{publisher}}
etc...
{{/with}}
</template.
然后正如@blueren建议的那样,使用.findOne()
返回一本书:
Template.hutch.helpers({
'book'(){
return BookList.findOne(randomBook);
}
});