我试图从一个对我来说有点混乱的集合中获取价值。
Collection看起来像这样
{
"_id" : "bqaGRGotKzYiA6mZv",
"0" : {
"MessageId" : "8B25CEB0-9EC6-48F7-9826-0AC813E903F8",
"Requested" : ISODate("2015-10-08T16:47:40.173Z")
},
"1" : {
"MessageId" : "B02935F0-8492-4858-B8C1-0BCEA9BCC80B",
"Requested" : ISODate("2015-10-08T16:59:45.503Z")
},
"2" : {
"MessageId" : "F766B029-BB81-4E6C-90B5-71B51B8F77FA",
"Requested" : ISODate("2015-10-08T16:47:22.956Z")
},
"3" : {
"MessageId" : "D88D87EE-CD25-4624-8265-8D66D8D9163A",
"Requested" : ISODate("2015-10-08T17:24:20.906Z")
}
}
现在我想向客户端显示一个表格,其中包含"请求" 1列中的值 除了手动指向每个数字之外还有其他方法吗?
这是帮手
myHelper: function(){
return Tasks.find();
}
以下代码将打印" ISODate(" 2015-10-08T16:47:40.173Z")"
{{#each myHelper}}
{{[0].Requested}}
{{/each}}
但我想要一些自动行动,因为我不知道将收集多少数字。
答案 0 :(得分:1)
我可能不会告诉您对实现目标的期望或需要,但您采取的收集组织方法对我来说有点奇怪。所以我也会发布我的答案。
如果您有这样的收藏品
{
"_id": "bqaGRGotKzYiA6mZv",
"messages": [{
"MessageId": "8B25CEB0-9EC6-48F7-9826-0AC813E903F8",
"Requested": ISODate("2015-10-08T16:47:40.173Z")
}, {
"MessageId": "B02935F0-8492-4858-B8C1-0BCEA9BCC80B",
"Requested": ISODate("2015-10-08T16:59:45.503Z")
}, {
"MessageId": "F766B029-BB81-4E6C-90B5-71B51B8F77FA",
"Requested": ISODate("2015-10-08T16:47:22.956Z")
}, {
"MessageId": "D88D87EE-CD25-4624-8265-8D66D8D9163A",
"Requested": ISODate("2015-10-08T17:24:20.906Z")
}]
}
或者,即使您需要明确地存储项目的ID,如下所示:
{
"_id": "bqaGRGotKzYiA6mZv",
"messages": [{
"id": 0,
"MessageId": "8B25CEB0-9EC6-48F7-9826-0AC813E903F8",
"Requested": ISODate("2015-10-08T16:47:40.173Z")
}, {
"id": 1,
"MessageId": "B02935F0-8492-4858-B8C1-0BCEA9BCC80B",
"Requested": ISODate("2015-10-08T16:59:45.503Z")
}, {
"id": 2,
"MessageId": "F766B029-BB81-4E6C-90B5-71B51B8F77FA",
"Requested": ISODate("2015-10-08T16:47:22.956Z")
}, {
"id": 3,
"MessageId": "D88D87EE-CD25-4624-8265-8D66D8D9163A",
"Requested": ISODate("2015-10-08T17:24:20.906Z")
}]
}
然后您就可以将帮助器中的数据提供给模板,如下所示:
myHelper: function(_id) {
return Tasks.find({
_id: _id
});
}
并像这样使用它:
{{#each myHelper}}
{{#each message}}
{{MessageId}}
{{Requested}}
{{/each}}
{{/each}}
您还可以将messages
项添加到集合项中,如下所示:
var theMessage = {
"MessageId": "whatever",
"Requested": "whenever"
}
Tasks.update({
_id: _id
}, {
$push: {
messages: theMessage
}
});
答案 1 :(得分:0)
创建全局帮助器,将每个对象从集合转换为数组。
Template.registerHelper("convertToArray", function(){
var self = this; //this points to single object from collection.
var array = [];
var keys = _.without(Object.keys(this), "_id");
keys.forEach(function(key){
array.push(self[key]);
})
return array;
});
您可以选择在循环之前对键进行排序。
然后像这样使用它:
{{#each myHelper}}
{{#each convertToArray}}
{{Requested}}
{{/each}}
{{/each}}