考虑存储在我们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字段“。
如何解决此问题,以便获得所需的行为?