2017-10-06 26 views
0

価格が範囲内にあるかどうかをチェックする関数を実装しようとしています。DEXIE - decl型の型が 'void'でも 'any'でもない関数は、値を返す必要があります

データはIndexedDBにあり、Dexieを使用してデータを処理しています。私はdexieで動作するように適切な方法が何であるかを知らない私のsoluzion

public checkPrizeChange(codCli: string, codList: string, codArt: string, price: number): Observable<any> { 

    this._WebDBService.Listino_Articoli.filter(function (i){ 
     return (i.codLis == codList && i.codArt == codArt); 
    }).toArray().then(
     data => { 
     if(data.length != 1) 
     { 
      return Observable.of(false) 
     } 
     else{ 
      if(data[0].prezzoMin >= price && data[0].prezzoMax <= price) 
      return Observable.of(true) 
      else 
      return Observable.of(false) 
     } 
     } 
    ); 
    } 

をコンパイルすることはできません。この時点で

...

私はただの一部のフィールドをチェックする必要が

おかげで

答えて

1

は、この行の前にreturnを追加サポートするハードDexieTable、何の行と観測を返す...:

return this._WebDBService.Listino_Articoli.filter(function (i){ 
+0

は、今私が取得:タイプ「約束は>」「観察可能」を型に代入できません。 しかし、それは適切な方法であるshureですか? – DarioN1

+0

メソッドの戻り値の型を 'Observable ' – Faisal

1

DexieメソッドtoArray()はPromiseを返します。 Observableを返すことにします。

おそらく、あなたのような何かを行う必要があります。また

public checkPrizeChange(codCli: string, codList: string, codArt: string, price: number): Observable<boolean> { 

    return Observable.fromPromise(this._WebDBService.Listino_Articoli.filter(i => i.codLis == codList && i.codArt == codArt).toArray().then(
    data => { 
     if(data.length != 1) 
     { 
     return false; 
     } 
     else{ 
     if(data[0].prezzoMin >= price && data[0].prezzoMax <= price) 
      return true; 
     else 
      return false; 
     } 
    } 
); 
} 

を、あなたはcompound index "[codLis + codArt]は、" あなたのクエリをスピードアップするために利用することができるようです。 Dexie 2.0を使用している場合、クエリは、インデックスを利用するように書き換えることができます

this._WebDBService.Listino_Articoli.where({ 
    codLis: codLis, 
    codArt: codArt 
}).toArray() 
+0

に変更してくださいThanks David !!!本当に感謝 !!! – DarioN1

+0

Listino_Articoli: '[codLis + codArt]、prezzo、preSco、preScoTes、codSco、prePro、valSco、perSco1、perSco2、perSco3、datIniSco、datFinSco、prezzoMin、prezzoMax'、 – DarioN1

+0

これは合成キーの表です! – DarioN1

関連する問題