Comments (9)
This happens because when you have two models that depend on each other, e.g. AccesToken -> User, User -> AccesToken, one of imports will be undefined when the file first runs. In order the resolve this you need to use a function in the same way the @OneToMany
/ @ManyToOne
decorator does it.
This illustrates the problem:
// user.entity.ts
// Reference to AccessToken class will be 'undefined' at runtime
// because User and AccessToken depend on each other
@import { AccessToken } from "./acces-token.enitity';
class User {
...
@ApiModelProperty({
// AccessToken is undefined, therefore this type resolves to an empty object
type: AccessToken ,
isArray: true
})
@OneToMany(type => AccessToken, accessTokens => accessTokens.user)
accessTokens:AccessToken[]
}
---
// access-token.entity.ts
@import { User } from "./user.entity";
class AccessToken {
...
@ApiModelProperty({
// The User import can be resolved,
// so this will actually resolve to the User enity type
type: User,
})
@ManyToOne(type => User, user => user.accesTokens)
user:User
}
A proposed fix is to wrap the related Model in a callback, the same way that @OneToMany
does this. E.g.:
...
@ApiModelProperty({
// Using a function that returns a reference to the class fixes the issue,
// since the AccesToken class will be resolved when the decorator runs
type: type => AccessToken ,
isArray: true
})
@OneToMany(type => AccessToken, accessTokens => accessTokens.user)
accessTokens:AccessToken[]
I already requested a merge on this pull request: #179 (labibramadhan#1)
from swagger.
+1
from swagger.
from swagger.
this is still present in 5.0.2, also this also affects @OnetoOne type relations as well. Manually specifying a type such as @ApiModelProperty({type: MyType})
has no affect.
from swagger.
I hope this issue can be improved.
from swagger.
+1
from swagger.
Fixed in the next
version (to install run npm i @nestjs/swagger@next
). Note: remember to update @nestjs/common
, @nestjs/core
and typescript
as well to ensure that you're using the latest versions.
Steps to migrate: #355 (comment)
from swagger.
4.0.0 has been published
from swagger.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
from swagger.
Related Issues (20)
- Monorepo support for the Swagger module HOT 1
- File upload only displays the string "string($binary)" instead of upload button HOT 1
- circular dependency has been detected with swagger plugin HOT 2
- Oauth2 Redirect url not working correctly without trailing path HOT 1
- The fields of DTO do not appear in Swagger UI when using CLI. HOT 1
- Wrong swagger generation for @Query with array of objects HOT 4
- Swagger is not showing extended properties HOT 7
- Custom `type` is not retained as type, but rewritten as `allOf: - $ref: ...` breaking `nullable: true` spec in `@ApiProperty` HOT 8
- Setting the name attribute results in a schema change HOT 2
- CLI Plugin cannot generate descriptions for endpoint HOT 1
- OpenAPI: Use oneOf with $ref
- Typescript Program is undefined when ts-jest isolatedModule is true
- Metadata gets incorrectly applied/merged when using loadPluginMetadata HOT 3
- Support for Header Versioning
- swagger debugging does not work properly when using @body("user") user:User as an argument, there is no Request body, but @body() user:User works fine with no argument HOT 1
- Issues with typescript >= 5.5 HOT 1
- default @ApiTag to controller name HOT 2
- Help: Need to add basic authentication to access swagger url in fastify nestjs application HOT 2
- Using Types with the metadata generator plugin doesn't seem to work HOT 1
- OpenAPI 2 fork HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swagger.