Javascript 如何从MongoDb集合中获取随机文档,然后以HTML格式显示随机选择的文档的每个字段?

Javascript 如何从MongoDb集合中获取随机文档,然后以HTML格式显示随机选择的文档的每个字段?,javascript,html,mongodb,meteor,Javascript,Html,Mongodb,Meteor,我正在从MongoDB集合中随机抽取一个文档。然后我尝试用HTML显示该随机文档的所有字段 我可以很好地获得一个随机文档,但是当我试图显示该文档的字段时,它们都是混乱的。我的意思是: Template.hutch.helpers( { //function returns one random book from a collection of books 'book': function() { return BookList.find(randomBo

我正在从MongoDB集合中随机抽取一个文档。然后我尝试用HTML显示该随机文档的所有字段

我可以很好地获得一个随机文档,但是当我试图显示该文档的字段时,它们都是混乱的。我的意思是:

Template.hutch.helpers(
{
    //function returns one random book from a collection of books
    'book': function()
    {
        return BookList.find(randomBook);
    }
}
这将从我的收藏中随机返回1本书。我知道这本书不对,我只是想把重点讲清楚。该函数稍大一些,但它从我的图书列表中返回一个随机元素

我想用HTML显示这本书的内容

当我执行{{book.Title}、{{book.Publisher}、{{{book.Etc}时,值不对齐,因为它每次都会得到一本随机的书。正如您所期望的,该函数会得到一本随机的书。所以它会得到一个随机的标题,随机的出版商,等等。我想从同一本书中得到所有的信息

我还知道,在helper函数中可以调用:return BookList.find

然后在HTML中调用{{book1}}将返回[Object]

我试过{{book1.Title}}、{{book1.Title}、{{book1.Title}}等等,但都不管用

我想我要问的是:如何从书籍列表中随机获得一本书,然后将同一本书的每个字段显示为HTML

我的项目是当你点击一个按钮时,尝试用一本随机书的信息填充一个表。所有的书都存储在数据库中,我想随机选择一本书,在HTML表中显示标题、出版商等


谢谢你的帮助

假设您的随机书籍文档如下所示:

{
  bookName: "TheRandomBook",
  bookAuthors: "RandomAuthor",
  bookPublishedYear: 1969,
  ....

}
helper.js:

因为您只需要一本书,所以请使用findOne而不是find,因为findOne将只返回一个对象,而find将返回一个游标来迭代对象

getRandomBook: function(){
   return books.findOne();
}
showBooks.html:


假设您的随机书本文档如下所示:

{
  bookName: "TheRandomBook",
  bookAuthors: "RandomAuthor",
  bookPublishedYear: 1969,
  ....

}
helper.js:

因为您只需要一本书,所以请使用findOne而不是find,因为findOne将只返回一个对象,而find将返回一个游标来迭代对象

getRandomBook: function(){
   return books.findOne();
}
showBooks.html:

使用with设置数据上下文,然后直接使用键:

<template name="hutch">
{{#with book}}
  Title: {{title}}
  Publisher: {{publisher}}
  etc...
{{/with}}
</template.
使用with设置数据上下文,然后直接使用键:

<template name="hutch">
{{#with book}}
  Title: {{title}}
  Publisher: {{publisher}}
  etc...
{{/with}}
</template.

但是看看函数getRandomBook是否真的返回了一个RandomBook,每次通过{{getRandomBook.Value}}从HTML调用它时,值都不会对齐。所以你可能会得到。标题:白鲸。作者:J.K.罗琳。发布日期:2016这没有意义。如果对象包含{Title:moby Dick,author:JK Rowling,PublishedYear:2016},那么它将显示这样的内容。它不可能从一个特定的对象中选取标题,因为作者将形成一个完全不同的对象。除非,您正在为每一个调用findOne助手。你能不能把你的html代码放在一个可以理解的片段里?标题:{{getRandomBook.Title}年份:{{getRandomBook.Year}评级:{{{getRandomBook.Rating}}问题在getRandomBook函数中。它并不是每次都返回同一本书,所以当在HTML的每个不同部分调用它时,它会选择不同的书。但是看看函数getRandomBook是否确实返回一本随机书,每次通过{{getRandomBook.Value}}从HTML调用它时,这些值都不会对齐。所以你可能会得到。标题:白鲸。作者:J.K.罗琳。发布日期:2016这没有意义。如果对象包含{Title:moby Dick,author:JK Rowling,PublishedYear:2016},那么它将显示这样的内容。它不可能从一个特定的对象中选取标题,因为作者将形成一个完全不同的对象。除非,您正在为每一个调用findOne助手。你能不能把你的html代码放在一个可以理解的片段里?标题:{{getRandomBook.Title}年份:{{getRandomBook.Year}评级:{{{getRandomBook.Rating}}问题在getRandomBook函数中。它并不是每次都返回同一本书,所以当在HTML的每个不同部分调用它时,它会选择不同的书。这么简单的解决方案,非常感谢您的帮助,我真的很感激!太棒了,这是我需要的{{with}}数据上下文设置。这么简单的解决方案,非常感谢您的帮助,我真的很感激!