我是Meteor的新手,所以对新手问题道歉。注意我正在使用CoffeeScript。
我在服务器和客户端“ifs”上创建一个新集合,如下所示:
Trivia = new Meteor.Collection("trivia")
在启动时,我将一些文档插入到Meteor.isServer下的集合中。这里有一个例子:
Meteor.startup () ->
Trivia.remove({})
Trivia.insert({question: "Who Played Ethan Hunt in Mission Impossible?", choices: ["Tom Cruise", "Matt Damon", "Liam Neeson", "Edward Norton"], answer: "Tom Cruise", used: false})
在HTML页面上,我有一个带有{{ask}}的“琐事”模板。
<body>
{{> trivia}}
</body>
<template name="trivia">
<p class="label label-info">Movie Trivia:</p>
<h3>{{ask}}</h3>
</template>
这是我在.isClient
中的代码if Meteor.isClient
Template.trivia.ask = () ->
Trivia.findOne({used: false})
实际上,我在HTML中的h3标签内找回[object Object]。
我想回到问题文本,但如果我使用以下代码,我会得到一个空白页:
Template.trivia.ask = () ->
Trivia.findOne({used: false}).question
如果我在控制台内运行 Trivia.findOne({used:false})。问题,我就会得到我想要的东西,即:“谁在不可能的任务中扮演Ethan Hunt?”
答案 0 :(得分:0)
答案是汤姆克鲁斯!笑话
查询返回包含文档的对象:
{
question: "Who Played Ethan Hunt in Mission Impossible?",
choices: ["Tom Cruise", "Matt Damon", "Liam Neeson", "Edward Norton"],
answer: "Tom Cruise",
used: false
}
所以上面给出了把手的内容,但你想要问题所以你应该使用:
<h3>{{ask.question}}</h3>
关于使用Trivia.findOne({used: false}).question
时的空白页面。这是因为当meteor最初在浏览器上加载时,本地集合为空,直到从服务器获取它们为止。因此,在某些时候,在很短的时间内,查询将不返回任何内容,因此您只需处理findOne({used:false})
没有结果的情况。当遇到异常时,页面变为空白。