如何在离子存储中进行条件获取

How to make conditional get in Ionic Storage

我正在开发 运行 android phone 上的 Ionic2 应用程序。 它不需要远程数据库。所以我决定使用本地存储 'Store'。

我找到了一些文章并做了一些改进,如下所示。 我成功获得了所有值,但我想在某些条件下获得一些东西,例如 SQL 中的 'where' 语句。 (getWorksOn(someDate){...})

我搜索并阅读了30多篇热门文章,但我找不到方法。 如果有任何办法,请告诉我。

// work-service.ts
addWork(work){
  this.storage.get('myWorks').then((data) => {
    if(data != null){
      data.push(work);
      this.storage.set('myWorks', data);
    } else {
      let tempWorks = [];
      tempWorks.push(work);
      this.storage.set('myWorks', tempWorks);
    }
  });
}

getWorks(){
  return this.storage.get('myWorks');
}

getWorksOn(someDate){
  // I want to return works that worked on someDate 
  // Is there any way to get some value conditionally 
  return this.storage.get('myWorks');
} 

// work-list.ts 
works:any;
...
ngOnInit(){
  this.workService.getWorks().then((data)=>{
    this.works = data;
  });
} 

如果您使用的是 Lodash,那么您可以按如下所示进行操作。

注意: 你不能在 local storage 中这样做。你必须这样做......

getWorksOn(someDate){

 this.storage.get('myWorks').then((val) => {
    let myworkArray = val; //firstly, fetched the data
    let myworkArray2= _.filter(myworkArray , { 'date': someDate});//after that filter out according to your condition
    });
}

OP 的反馈使用 array

mapfilter 功能
    this.workService.getWorks().then((works) => { this.works = works.filter(work 
=> work.dateStr === this.dateStr ); });