File tree Expand file tree Collapse file tree 2 files changed +46
-1
lines changed Expand file tree Collapse file tree 2 files changed +46
-1
lines changed Original file line number Diff line number Diff line change @@ -25,5 +25,43 @@ describe('Resolver helper `alises` ->', () => {
2525 const aliases = prepareAliases ( User ) ;
2626 expect ( aliases ) . toEqual ( false ) ;
2727 } ) ;
28+
29+ it ( 'should extract field aliases from discriminator Models' , ( ) => {
30+ const UserSchema = new mongoose . Schema ( {
31+ e : {
32+ type : String ,
33+ alias : 'emailAddress' ,
34+ } ,
35+ } ) ;
36+ const User = mongoose . model ( 'User111' , UserSchema ) ;
37+ const VIPUserSchema = new mongoose . Schema ( {
38+ f : {
39+ type : Number ,
40+ alias : 'freeDrinks' ,
41+ } ,
42+ } ) ;
43+ User . discriminator ( 'VIPUser111' , VIPUserSchema ) ;
44+ const aliases = prepareAliases ( User ) ;
45+ expect ( aliases ) . toEqual ( { emailAddress : 'e' , freeDrinks : 'f' } ) ;
46+ } ) ;
47+
48+ it ( 'should extract field aliases in discriminator Models inherited from base Model' , ( ) => {
49+ const UserSchema = new mongoose . Schema ( {
50+ e : {
51+ type : String ,
52+ alias : 'emailAddress' ,
53+ } ,
54+ } ) ;
55+ const User = mongoose . model ( 'User789' , UserSchema ) ;
56+ const VIPUserSchema = new mongoose . Schema ( {
57+ f : {
58+ type : Number ,
59+ alias : 'freeDrinks' ,
60+ } ,
61+ } ) ;
62+ const VIPUser = User . discriminator ( 'VIPUser789' , VIPUserSchema ) ;
63+ const aliases = prepareAliases ( VIPUser ) ;
64+ expect ( aliases ) . toEqual ( { emailAddress : 'e' , freeDrinks : 'f' } ) ;
65+ } ) ;
2866 } ) ;
2967} ) ;
Original file line number Diff line number Diff line change @@ -5,7 +5,14 @@ export type AliasesMap = {
55} ;
66
77export function prepareAliases ( model : Model < any > ) : AliasesMap | false {
8- const aliases = ( model ?. schema as any ) ?. aliases ;
8+ const aliases = ( model ?. schema as any ) ?. aliases || { } ;
9+
10+ if ( model . discriminators ) {
11+ Object . keys ( model . discriminators ) . forEach ( ( subModelName : string ) => {
12+ const submodel : Model < any > = ( model . discriminators as any ) [ subModelName ] ;
13+ Object . assign ( aliases , ( submodel ?. schema as any ) ?. aliases ) ;
14+ } ) ;
15+ }
916 if ( Object . keys ( aliases ) . length > 0 ) {
1017 return aliases ;
1118 }
You can’t perform that action at this time.
0 commit comments