Node.js Angular 5-如何使用HttpParams进行搜索/筛选

Node.js Angular 5-如何使用HttpParams进行搜索/筛选,node.js,angular,Node.js,Angular,如何正确地使用HTTPParams应用过滤器,这是正确的用例吗 用户可以按多种语言、类型和兴趣进行筛选 组件。ts this.filterForm = this.fb.group({ language: [], type: [], interests: [], }) this.filterForm.valueChanges.subscribe((res) => { console.log(res);

如何正确地使用HTTPParams应用过滤器,这是正确的用例吗

用户可以按多种语言、类型和兴趣进行筛选

组件。ts

this.filterForm = this.fb.group({
        language: [],
        type: [],
        interests: [],
    })


    this.filterForm.valueChanges.subscribe((res) => {
        console.log(res);
        let filters = res;
        this.momentService.search(filters).subscribe((res) => {
            console.log(res);
        });
    });
这就是数据的样子

.service.ts

this.filterForm = this.fb.group({
        language: [],
        type: [],
        interests: [],
    })


    this.filterForm.valueChanges.subscribe((res) => {
        console.log(res);
        let filters = res;
        this.momentService.search(filters).subscribe((res) => {
            console.log(res);
        });
    });
我将filters对象传递给我的服务,该服务对/search进行api调用

search(filters) {

    let endpoint = this.path + 'search';

    let params = new HttpParams().set('filters', filters);

    return this.apiService.get(endpoint, params);

}
请求 网址:

后端/搜索

search(req, res) {

    let search = req.query;
    console.log(search);
    return res.json(search);

    // TODO: Do search with filter objec.

 }
我的节点后端像这样接收它,我对此无能为力。我曾尝试使用JSON.Stringfy将其传递到后端,但一旦结果变成字符串,我就无法将其转换回对象形式

{ filters: '[object Object]' }

我认为我没有正确地使用HTTPParms。

您可以使用
HttpParamsOptions
fromObject
选项,在您的情况下:

search(filters) {
    let endpoint = this.path + 'search';
    let params = new HttpParams({ fromObject: filters });
    return this.apiService.get(endpoint, params);
}

您可以使用
HttpParamsOptions
fromObject
选项,具体情况如下:

search(filters) {
    let endpoint = this.path + 'search';
    let params = new HttpParams({ fromObject: filters });
    return this.apiService.get(endpoint, params);
}

你的
apiService.get
方法是什么样子的?@cyrix请检查这个粘贴库-你的
apiService.get
方法是什么样子的?@cyrix请检查这个粘贴库-这个很好用。那么这个fromObject做什么呢?文档中似乎没有关于HttpParamsOption的内容。如果从对象创建一个
HttpParams
映射,则可以找到实现。好的,很好。这很好。那么这个fromObject做什么呢?文档中似乎没有关于HttpParamsOption的内容。如果从对象创建一个
HttpParams
映射,则可以找到实现。好的,很好。