我觉得这很难解释,但是我将通用数据库服务中的observable传递给我的组件。
方法如下:
getCollectionThroughDivisionId(id: UUID): Observable<T[]> {
return this._table.watch().map(returnedObjects =>
returnedObjects.filter(returnedObject => returnedObject.divisionId == id)
);
}
上述方法返回一个通用对象的可观察数组,通过其divisionId
进行过滤事情是我需要一个方法来过滤returnObject中的数组
getCollectionThroughUserId(id: UUID): Observable<T[]> {
return this._table.watch().map(returnedObjects =>
returnedObjects.filter(returnedObject => returnedObject.userId.filter(x => x == id))
);
}
参数userId是一个id的数组,但默认返回整个集合(不会抛出错误)。
编辑:
对象模型:
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 :(得分:1)
除了听起来你从服务器获取数据的事实,你不应该被允许看到(通常过滤掉用户不应该看到的东西是后端工作)。
您真正需要做的就是返回 id 是否在 userIds 的对象列表中。
getCollectionThroughUserId(id: UUID): Observable<T[]> {
return this._table.watch().map(returnedObjects =>
returnedObjects.filter(returnedObject => returnedObject.userId.indexOf(id) !== -1)
);
}
这将从列表中删除 userId 列表中没有 id 的任何returnedObject。