1

我想根据 2 个属性从秋田商店中选择值,其中任何一个都应该与我正在寻找的东西相匹配。

我从一个简单的开始(添加了 filterBy [] 知道我想要过滤不止一件事):

this.myQuery.selectAll({
  filterBy: [
    (entity: MyEntityType) => entity.prop1 === thingToMatch 
  ]
}).subscribe((entities) => {})

哪个正确返回与过滤器匹配的实体对象。但是,实体上有 2 个属性,其中任何一个都可能具有我要匹配的值。所以我猜了一下:

this.myQuery.selectAll({
  filterBy: [
    (entity: MyEntityType) => 
      entity.prop1 === thingToMatch || entity.prop2  === thingToMatch
  ]
}).subscribe((entities) => {})

那里的第二个代码块不返回任何实体,第一个返回匹配一个 ok。

我想我可以做一个 SelectAll 然后使用 TS 过滤,

this.myQuery.selectAll().subscribe((entities) => {  
   entities.filter(..... )
});

但我希望我可以在秋田选择框架内做一个 OR。

对秋田商店选择进行 OR 操作的正确语法是什么?我什至应该使用 select() 吗?

4

1 回答 1

0

我相信 Akita combineQueries 会在这里工作。


const filter1 = this.myQuery.selectAll({
  filterBy: [
    (entity: MyEntityType) => entity.prop1 === thingToMatch
  ]
});

const filter2 = this.myQuery.selectAll({
  filterBy: [
    (entity: MyEntityType) => entity.prop2  === thingToMatch
  ]
});

const result$ = combineQueries([filter1, filter2]).subscribe(...) 
于 2020-10-30T03:11:42.470 回答