在meteor中我创建了一个数据库数组。以下是内容:
meteor:PRIMARY> db.games.find()
{ "_id" : "ceg9JJ3u5abwqeyk7", "board" : [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ] }
在我的模板帮助器中的client / main.js文件中,我有:
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
game() {
return {
game: Games.find()}
}
});
在我的main.html中,我有以下模板:
<template name="hello">
{{game}}
</template>
我在浏览器上的输出是:
[object Object]
但是我想让我的数组内容(例如“0”)放在浏览器中而不是“对象”。
我该怎么做?
答案 0 :(得分:2)
您没有正确地迭代查询。
Template.hello.helpers({
game() {
return Games.find()
}
});
main.html中:
<template name="hello">
{{#each game}}
Boards: {{board}}
{{/each}}
</template>
根据您的评论解释:
您收集的find
条记录有三种不同的方式。
Collection.findOne()
:仅返回1条记录作为对象
Collection.find().fetch()
:将所有记录作为对象数组返回
Collection.find()
:返回游标(这是一个函数)
请使用您的浏览器控制台,使用以下语句查看其中每个语句之间的差异,以便更好地理解:
console.log(Games.findOne());
console.log(Games.find().fetch());
console.log(Games.find());
所有这些都将返回您的整个board
字段数据,因为所有数据都存储为单个记录。
因此,您必须按以下方式之一存储此数据,以便根据您的要求过滤数据。
方法1:
以下列格式存储您的数据作为每个游戏的单独记录:
{
"_id" : "ceg9JJ3u5abwqeyk7",
"name": "Game-1",
"score": [ 0, 0, 0 ]
},{
"_id" : "bzv778zv6qge7xc8",
"name": "Game-3",
"score": [ 0, 0, 0 ]
},{
"_id" : "eji3ds9jo8yhs7739",
"name": "Game-3",
"score": [ 0, 0, 0 ]
},
您现在可以使用以下代码显示数据:
<template name="hello">
{{#each game}}
Game Name: {{name}}, Score: {{score}} <br/>
{{/each}}
</template>
如果您只想显示&#34; Game-3&#34;得分,您可以在使用find
获取数据时进行过滤:
<template name="hello">
{{#each game}}
Game Name: Game-3, Score: {{score}}
{{/each}}
</template>
Template.hello.helpers({
game() {
return Games.find({name:"Game-3"});
}
});
方法2:
以下列格式存储您的数据:
{
"_id" : "ceg9JJ3u5abwqeyk7",
"board" : [
{
"name": "Game-1",
"score": [ 0, 0, 0 ]
},
{
"name": "Game-2",
"score": [ 0, 0, 0 ]
},
{
"name": "Game-3",
"score": [ 0, 0, 0 ]
},
]
}
您可以使用以下代码显示数据:
<template name="hello">
{{#each game}}
Boards: <br/>
{{#each board}}
Game Name: {{name}}, Score: {{score}} <br/>
{{/each}}
{{/each}}
</template>
如果您只想显示&#34; Game-3&#34;得分,您可以使用助手进行过滤,如下所示:
<template name="hello">
{{#each game}}
Boards: <br/>
{{#each board}}
{{#if isThirdGame}}
Game Name: Game-3, Score: {{score}}
{{/if}}
{{/each}}
{{/each}}
</template>
Template.hello.helpers({
game() {
return Games.find()
},
isThirdGame() {
return this.name === "Game-3" ? true : false;
},
});