Javascript Meteor-如何使用{{each}}在表中显示来自mongoDB的多个数组?
我在mongoDB中有一个名为pIds的集合,其中包含多个数组:Javascript Meteor-如何使用{{each}}在表中显示来自mongoDB的多个数组?,javascript,arrays,meteor,html-table,each,Javascript,Arrays,Meteor,Html Table,Each,我在mongoDB中有一个名为pIds的集合,其中包含多个数组: { "_id" : "Coms>f41a3480af751a7a", "pIds" : [ "pid_833d82c2f32b7dc0", "pid_833d82c2f32b7dc0", "pid_833d82c2f32b7dc0", ], "dudes" : [ "AB", "AC",
{
"_id" : "Coms>f41a3480af751a7a",
"pIds" : [
"pid_833d82c2f32b7dc0",
"pid_833d82c2f32b7dc0",
"pid_833d82c2f32b7dc0",
],
"dudes" : [
"AB",
"AC",
"BC"
],
"ho" : [
"Coms>f41a3480af751a7a",
"Coms>f41a3480af751a7a",
"Coms>f41a3480af751a7a"
],
"ps" : [
"vf",
"ou",
"rwf"
],
}
现在,我想将这些元素动态呈现到一个HTML表中,以便该表的更改方式与集合中数据的更改方式相同。因此,当新元素写入集合PID时,表应该自动添加新元素。我考虑过使用{{each}}
JS助手:
Template.home.helpers({
'pIdsRendering': function() {
if (Meteor.userId()) {
var pId = pIds.find({'_id': Session.get('pIdshome')}).fetch();
return pId;
}
},
});
HTML:
实际上,这是可行的,新的元素被添加到了表中,但我就是不能将内容放入表的正确单元格中。它将所有内容放在一列中,就像表中的数据是这样写的:
所以,我认为这是逻辑顺序,但我就是做不到……最后,表格应该是这样的:
为每个数组项创建新标记,这就是为什么每个项都位于新行中的原因。我建议您稍微更改一下收集模式。我会像下面这样做:
{
"_id" : "Coms>f41a3480af751a7a",
"data": [
{
"pid": "pid_833d82c2f32b7dc0",
"dude": "AB",
"ho": "Coms>f41a3480af751a7a",
"ps": "vf"
},
{
"pid": "pid_833d82c2f32b7dc0",
"dude": "AC",
"ho": "Coms>f41a3480af751a7a",
"ps": "ou"
}
]
}
然后在Blaze模板中,您可以更轻松地显示记录
{{ #each record }}
{{ #each data }}
<tr>
<td>{{ pid }}</td>
<td>{{ dude }}</td>
<td>{{ ho }}</td>
<td>{{ ps }}</td>
</tr>
{{ /each }}
{{ /each }}
您的实际架构可能会导致意外错误。例如,当pIds数组的元素比dudes数组的元素多时。验证它更加困难。通过使用对象,您可以更轻松地执行此操作。另外,我猜您希望将pIds[index]元素与dudes[index]元素绑定。在这种情况下,像您这样使用数组是不正确的。您的答案非常好,非常感谢!将数据模式更改为对象使其更加容易。此外,您是对的,我想将pIds[index]与dudes[index]绑定,通过使用一个对象,这要容易得多。
{{ #each record }}
{{ #each data }}
<tr>
<td>{{ pid }}</td>
<td>{{ dude }}</td>
<td>{{ ho }}</td>
<td>{{ ps }}</td>
</tr>
{{ /each }}
{{ /each }}