ReactiveSearch-对对象数组进行*和*操作

时间:2018-07-15 01:57:53

标签: reactjs elasticsearch reactivesearch

考虑存储在我们mongo数据库“用户”集合中的以下用户,该用户已同步到appbase.io:

{
   name: "John Doe",
   id: "jdoe",
   courses: [
      {
         name: "CS100",
         academic_year: "2018-2019",
         academic_term: "Fall"
      },
      {
         name: "ECON1",
         academic_year: "2017-2018",
         academic_term: "Winter"
      }
   ]
}

在我们的应用中,我们希望能够按课程,学年和学期筛选“用户”集合。因此,我们正在使用reactsearch的SingleList组件来选择过滤器。该代码如下所示:

      <div> Course: </div>
      <SingleList
        componentId="CourseFilter"
        dataField="courses.name.keyword"
        placeholder="Enter Course"
        react={{
              and: ["CourseYearFilter", "CourseTermFilter"]
        }}
      />
      <div> Academic Year: </div>
      <SingleList
        componentId="CourseYearFilter"
        dataField="courses.academic_year.keyword"
        placeholder="Enter Academic Year"
        react={{
              and: ["CourseFilter", "CourseTermFilter"]
        }}
      />
      <div> Term: </div>
      <SingleList
        componentId="CourseTermFilter"
        dataField="courses.academic_term.keyword"
        placeholder="Enter Academic Term"
        react={{
              and: ["CourseFilter", "CourseYearFilter"]
        }}
      />

现在,这是我们想要的行为:这三个部分都应该对彼此的变化做出反应。因此,如果我在SingleList课程中选择“ CS100”,则学年SingleList仅应显示“ 2018-2019”,而学术术语SingleList应仅显示“ Fall”。将此视为嵌套在数组中的对象中的操作。

这是我们观察到的行为:如果我在“ SingleList”课程中选择“ CS100”,则学年SingleList将“ 2018-2019”和“ 2017-2018”都显示为选项,即使CS100显然是在“ 2017-2018”中采用的。同样,学术术语SingleList向我显示了“秋季”和“冬季”这两个选项。造成这种情况的原因似乎是,reactiveSearch并不是在相同对象中寻找数据点,而是在检查使用“ CS100”的同一用户中存在的所有Academic_year和Academic_term字段“。

如何解决此问题,以便获得所需的行为?

0 个答案:

没有答案