これは説明が難しいと感じますが、私は汎用データベースサービスのオブザーバブルをコンポーネントに渡しています。フィルタリング対象オブジェクトの配列をフィルタリングする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配列を確認し、すべてのタスクを反復
フィルタはおそらく、ここで使用する正しい方法ではありません。代わりにmapを代わりに使用して、返されたオブジェクトをより少ないユーザーIDを持つオブジェクトにマップしてください。 :) – toskv
私はあなたが何を意味しているのかよく分かりません。すべてのオブジェクトのすべてのuserIdをチェックする必要があります。あなたが私に例を与えることができたらどうですか? – Laurens
これをまっすぐにする。あなたがしたいことは、ユーザーIDをreturnedObject.userIdプロパティから除外することです。 {userId:[1,2]}とid = 1をお持ちの場合は、{userId:[1]}に戻ってください。 – toskv