Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor-如何使用{{each}}在表中显示来自mongoDB的多个数组?_Javascript_Arrays_Meteor_Html Table_Each - Fatal编程技术网

Javascript Meteor-如何使用{{each}}在表中显示来自mongoDB的多个数组?

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",

我在mongoDB中有一个名为pIds的集合,其中包含多个数组:

{
    "_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 }}