Angular请求它对nestjsx / crud的工作方式

问题描述

我已经尝试了好几个小时才能使它正常工作,但我做不到,我希望你们中的一些人能回答我的问题,因为它必须非常简单,而且我是初学者 我使用的是AngularJs,而Nest中的NestJs使用的是@nestjsx/crud,然后拖曳了request docs,所以,这里出现了问题:

这是我的Angular服务功能

getProductsOfPiece(pieceId: number): Observable<ProductSimple[]> {
    return this.http.get<ProductSimple[]>(
      'api/producto/',{
        params: {
          fields: "id,refFabr,refCliente,descrCorta,imagen",filter: 'pieza.id||$eq||'+ pieceId
        }
      }
    );
  }

此请求给了我一个400错误的请求,看起来像这样:

/api/producto/?fields=id,imagen&filter=pieza.id%257C%257C$eq%257C%257C1

我想像%和十六进制与URI编码有关,并尝试对其进行编码/解码,但是没有用。

我还尝试使用文档中引用的FrontEnd usageRequestQueryBuilder的{​​{1}}类@nestjsx/crud-request,并将其附加到URL

 let queryString = RequestQueryBuilder.create()
      .select(["id","refFabr","refCliente","descrCorta","imagen"])
      .setFilter({
        field: "coleccion.id",operator: CondOperator.EQUALS,value: collectionId
      }).query();
 return this.http.get<ProductSimple[]>(
      'api/producto/?'+queryString
 );

但结果更糟

/api/producto/?fields=id%2CrefFabr%2CrefCliente%2CdescrCorta%2Cimagen&filter%5B0%5D=pieza.id%7C%7C%24eq%7C%7C1

我不了解的是我如何用邮递员来完成这项工作,而且有效!

api/producto/?fields=id,imagen&filter=coleccion.id||$eq||6

我如何使它起作用,我的代码有什么问题?

解决方法

最后得到答案,只需要在.query(false)上设置RequestQueryBuilder,此boolean参数适用于encode,接缝类似于Angular的HttpClient类对网址进行一些编码或其他操作

有效!这是代码:

  getProductsOfPiece(pieceId: number): Observable<ProductSimple[]> {
     let queryString = RequestQueryBuilder.create()
      .select(["id","refFabr","refCliente","descrCorta","imagen"])
      .setFilter({
        field: "coleccion.id",operator: CondOperator.EQUALS,value: collectionId
      }).query(false);
     return this.http.get<ProductSimple[]>(
      'api/producto/?'+queryString
     );
  }

您需要导入 RequestQueryBuilder中的@nestjsx/crud-request

npm我@ nestjsx / crud-request。

欢迎任何观察...

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...