大家。我希望在下拉列表中选择该科目后将其注册在表格中。这些学生的ID存储在一个数组中。问题是从文档中检索到的此ID数组看起来有些奇怪。似乎数组中有一个数组。
就像控制台中显示的一样:
shown in console

 {enrollment: Array(2)}
     enrollment: Array(2)
     0: "b1602231"
     1: "B1560124"
     length: 2
     __proto__: Array(0)
     __proto__: Object


它引发了一个错误:模板助手中的异常:错误:$ in需要一个数组

那么我该如何解决呢?如果有人可以给我一些想法,我将不胜感激。

下面是事件处理程序和帮助程序。

Template.subject.events({
  ‘change #dropdown’: function(event, template) {
    var selectedValue = $(event.target).val();
    var array = subject.findOne( { subjectCode:selectedValue }, { fields:{ _id:0, enrollment:1 } } );
    Session.set(‘studentEnrolled’,array);
  }
});

Template.student.helpers({
  student: function() {
    var listOfStudent = Session.get( ‘studentEnrolled’ );
    return student.find( { studentID: { $in:listOfStudent } } );
  }
});


// HTML

<template name="student">
        {{#each student}}
        <tr>
          <td>{{name}}</td>
        </tr>
        {{/each}}
</template>

最佳答案

从论坛复制我的答案:

首先,您将在此处获取整个主题文档(并在第一个答案之后,将该数组包装到另一个数组中):

Session.set('studentEnrolled',[array]);


这意味着当您在此处搜索时:

return student.find({studentID:{$in:listOfStudent}});


您正在传递一个包含文档的数组,而不是enrollments数组。

您要做的是将注册存储在会话中:

Session.set('studentEnrolled', array.enrollments);


我还建议重命名变量array,因为它不是数组,这可能会引起您的困惑

07-24 18:12
查看更多