2017-05-03 7 views
0

これは説明が難しいと感じますが、私は汎用データベースサービスのオブザーバブルをコンポーネントに渡しています。フィルタリング対象オブジェクトの配列をフィルタリングするTypeScript

方法は次のようになります。

getCollectionThroughDivisionId(id: UUID): Observable<T[]> { 
    return this._table.watch().map(returnedObjects => 
     returnedObjects.filter(returnedObject => returnedObject.divisionId == id) 
    ); 
} 

上記の方法は、

事は、私は内部の配列をフィルタリングする方法が必要であるそのdivisionIdを通してろ過し、一般的なオブジェクトの観察可能な配列を返しますTHRなし(コレクション全体を返すデフォルトのid

getCollectionThroughUserId(id: UUID): Observable<T[]> { 
    return this._table.watch().map(returnedObjects => 
     returnedObjects.filter(returnedObject => returnedObject.userId.filter(x => x == id)) 
    ); 
} 

パラメータのユーザーIDは、IDの配列であるためではなくことをreturnedObjectエラーのため)。

編集:

オブジェクトモデル:

export class Task { 
    id: string; 
    name: string; 

    userId: string[]; 
    projectId: string; 

    public constructor(init?: Partial<ITask>) { 
     Object.assign(this, init); 
    } 
} 

JSON例:

{ 
"id": "TA18XVBJ3584ZM3" , 
"name": "User documentation & technical documentation" , 
"projectId": "PRYH3C72C6CQKZS" , 
"userId": [ 
    "USGC6W4RCERY2ET", 
    "USKWQYHKB8E3X2U" 
    ] 
} 

目標:それは渡されたのuserId

が含まれている場合はuserId配列を確認し、すべてのタスクを反復
+0

フィルタはおそらく、ここで使用する正しい方法ではありません。代わりにmapを代わりに使用して、返されたオブジェクトをより少ないユーザーIDを持つオブジェクトにマップしてください。 :) – toskv

+0

私はあなたが何を意味しているのかよく分かりません。すべてのオブジェクトのすべてのuserIdをチェックする必要があります。あなたが私に例を与えることができたらどうですか? – Laurens

+0

これをまっすぐにする。あなたがしたいことは、ユーザーIDをreturnedObject.userIdプロパティから除外することです。 {userId:[1,2]}とid = 1をお持ちの場合は、{userId:[1]}に戻ってください。 – toskv

答えて

1

サーバーからデータを取得しているように聞こえますuldnは見ることができません(通常、ユーザーがバックエンドの仕事であると見てはいけないものを除外します)。

あなたが本当にやらなければならないことは、IDユーザーIDのオブジェクトリストにあるかどうかを返します。

getCollectionThroughUserId(id: UUID): Observable<T[]> { 
    return this._table.watch().map(returnedObjects => 
     returnedObjects.filter(returnedObject => returnedObject.userId.indexOf(id) !== -1) 
    ); 
} 

これは、リストからのuserIdリストにIDを持たない任意のreturnedObjectを削除します。

+1

あなたはuserIdがnullではないと確信していますか?それが空リストの場合、それはうまくいくはずです。あなたはあなたが得るエラーを投稿できますか? – toskv

+0

コメントを削除すると、コードは正常に動作します。助けてくれてありがとう! – Laurens

関連する問題