2017-03-22 6 views
1

アンドロイドフォンで動作しているIonic2 Appを開発しています。 リモートDBは必要ありません。そこで、私はローカルストレージ 'Store'を使うことに決めました。Ionic Storageで条件付き取得する方法

私はいくつかの記事を見つけ、以下のようないくつかの改善を行いました。 私はすべての値を取得することに成功しましたが、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; 
    }); 
} 

答えて

0

Lodashを使用している場合は、次のようにすることができます。

注:あなたは。あなたがarray

this.workService.getWorks().then((works) => { this.works = works.filter(work 
=> work.dateStr === this.dateStr); }); 
mapfilter機能を使用して、この後、...

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のフィードバックような何かをしなければならないlocal storageの内側にこれを行うことはできません

+0

@Sampathのお返事ありがとうございます。 それはあなたを気にしない場合。私は別の質問があります。 私がgetWorksOn(someData)メソッドで約束した結果を返したいとしたら、Lodashフィルタ関数をどのように使うことができますか? 私は別のロジックで "getWorksOn"メソッドを使用しているので、私はそれを約束として返す必要があります。 –

+0

ここでは結果の問題なしで作業していますか?だから約束とは関係がありません。Lodashはデータを取り込んだ後でフィルタを実行します。 – Sampath

関連する問題