Angular 询问 nestjsx/crud 的工作原理

Angular Request how it works for nestjsx/crud

我已经尝试了几个小时让它工作,但我做不到,我希望你们中的一些人能回答我的问题,因为它一定很简单,而且我是初学者 我在 Nest 中使用 AngularJs 和 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,refFabr,refCliente,descrCorta,imagen&filter=pieza.id%257C%257C$eq%257C%257C1

我想 % 和十六进制与 URI 编码有关并尝试 encode/decode 它,但没有成功。

我还尝试使用文档中引用的 FrontEnd usage@nestjsx/crud-request 的 class RequestQueryBuilder,并将其附加到 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

我不明白我是如何用我的 Postman 做到这一点的,而且它起作用了!

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

我怎样才能让它工作,我的代码有什么问题?

终于得到答案,只需要在RequestQueryBuilder上设置.query(false),这个boolean参数是给encode的,接缝像Angular的 HttpClient class 对 URL 做了一些编码或其他事情,所以,无论如何

有效!这是代码:

  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 i @nestjsx/crud-request.

欢迎任何意见...

更新 创建或更新

这是文档 创建一个 https://github.com/nestjsx/crud/wiki/Controllers#create-one-resource 更新一 https://github.com/nestjsx/crud/wiki/Controllers#update-one-resource

以下引导创建和更新很简单 只需将 POST 到 API 'api/producto/' (例如)并将对象作为请求中的正文 对于更新,仅使用 PUT 方法和带有模型 ID 'api/producto/1' 的 API(例如)