NodeJs、Angular和Express中的过滤器未过滤结果

NodeJs、Angular和Express中的过滤器未过滤结果,angular,typescript,express,filter,rxjs,Angular,Typescript,Express,Filter,Rxjs,我有一个用于过滤某些数据的路径 import {Request, Response} from 'express'; import {MODELS} from "./db-data"; import {setTimeout} from "timers"; export function searchModel(req: Request, res: Response) { const queryParams = req.query; const modelId = que

我有一个用于过滤某些数据的路径

import {Request, Response} from 'express';
import {MODELS} from "./db-data";
import {setTimeout} from "timers";



export function searchModel(req: Request, res: Response) {

    const queryParams = req.query;

    const modelId = queryParams.modelId,
          filter = queryParams.filter || '',
          sortOrder = queryParams.sortOrder || 'asc',
          pageNumber = parseInt(queryParams.pageNumber) || 0,
          pageSize = parseInt(queryParams.pageSize) || 3;

    let models:any = Object.values(MODELS).sort((l1:any, l2:any) => l1.id - l2.id);

    models = models.filter(model => model.title.trim().toLowerCase().search(filter.toLowerCase()) >= 0);

    if (sortOrder == "desc") {
        models = models.reverse();
    }

    const initialPos = pageNumber * pageSize;

    const modelsPage = models.slice(initialPos, initialPos + pageSize);

    setTimeout(() => {
        res.status(200).json({payload: modelsPage});
    },1000);


}
模型是这样一个对象

export const MODELS: any = {

    0: {
        id: 0,
        title: "test1",
        category: 'category1',
        longDescription: "Lorem ipsum"
    },
    ....
    ....
然后在my server.ts文件中:

app.route('/api/models').get(searchModel);
在客户端,我有一个组件,我使用RxJs过滤结果,如下所示:

export class RepositoryComponent implements OnInit, AfterViewInit {

  modelList$: Observable<Model[]>;
  @ViewChild('searchInput', { static: true }) input: ElementRef;

  constructor() { }

  ngOnInit() {
    setRxJsLoggingLevel(RxJsLoggingLevel.TRACE);
  }

  ngAfterViewInit() {
    this.modelList$ = fromEvent<any>(this.input.nativeElement, 'keyup')
      .pipe(
          map(event => event.target.value),
          startWith(''),
          debug( RxJsLoggingLevel.TRACE, "search "),
          debounceTime(400),
          distinctUntilChanged(),
          switchMap(search => this.loadModels(search)),
          debug( RxJsLoggingLevel.DEBUG, "lessons value ")
      );
  }

  loadModels(search = ''): Observable<Model[]> {
    return createHttpObservable(`/api/models?pageSize=100&filter=${search}`)
    .pipe(
        map(res => res["payload"])
    );
  }

}

它不工作,并且总是返回所有模型。我搞不懂

你订阅了“可观测”吗?一切正常。观察者可以工作,但我不能过滤数据。您需要查看createHttpObservable函数吗?
http://localhost:4200/api/models?pageSize=100&filter=test1