Closed rojiwon123 closed 1 year ago
Upgrade to @nestia/sdk@1.0.11
, then would be fixed.
now @nestia/sdk 1.0.12, sdk path function logic is changed, but same bug still happens.
@industriously Show me your code. It must be a full project containing nestia.config.ts
branch: product
api controller -> find https://github.com/industriously/e-commerce/blob/product/src/api/product/presentation/products.controller.ts
nestia/sdk -> find https://github.com/industriously/e-commerce/blob/product/src/sdk/functional/products/index.ts
project root https://github.com/industriously/e-commerce/tree/product
URLSearchParams 생성자의 인자는 undefined일 수 있는 값을 허용하지 않습니다. (ex page?:string, page: string | undefined ) 그리고 실제로 undefined값을 할당하면, "?page=undefined"와 같은 형태로 나옵니다. 그래서 제 생각에는 런타임에서 값이 undefined인 키는 제거된 후 인자로 전달되어야 할 것 같습니다. 저는 쿼리를 키마다 각각 전달하지만 nestia.TypedQuery 처럼 전체 object타입으로 사용해도 마찬가지로 undefined인 값은 키까지 필터링되어야 할 것 같습니다. ( 일반적으로 optional한 키이고 undefined를 전달할 때, 키 자체를 추가하지 않은 객체를 전달하지만, 키를 생성하고 undefined를 전달해도 typecheck에서 통과합니다. 그리고 이 경우에는 undefined 문자열이 쿼리에 추가될 것입니다. - 정확히 이 상황을 테스트하진 못했습니다.)
new URLSearchParams() constructor not allow Record<string, undefined> type. so if i write new URLSearchParams({ page: PageType }) // type PageType = string | undefined, type error is throwed. and a query string ( that made by call toString() at URLSearchParams instance ) is "?page=undefined". so i think in runtime, if optional data is really undefined, object key ( that parameter of URLSearchParams constructor ) should be deleted.
PS. 혹시나 저 혼자만의 어이없는 실수로 인한 이슈라면 정말 죄송합니다. ㅜㅜ nestia up!!
Thanks for detailed reporting.
I haven't known about the URLSearchParams
, as I've not used query parameters at all.
Now, update to @nestia/sdk@1.0.13
, then everything would be fine.
findMany api has a optional query 'page'. but if page is undefined, url is written as "/products?page=undefined". and this query value is string "undefined".
i think, "/products?" or "/products" is right. (so i think, undefined type should be handled separately.)
In Korea,
findMany api를 구현했습니다. page는 optional한 쿼리입니다. sdk를 통해 findMany(connection)를 실행하면 undefined가 문자열 "undefined"로 전달되는 버그가 있습니다. ( ex) "/products?page=undefined" ) 이는 URLSearchParams의 처리 방식 때문인 것 같습니다. 제 생각에는 undefined값은 키조차 UrlSearchParams 객체 생성 인자로 전달되지 않아야 할 것 같습니다. ( ex) "/products?", "/products" )