File tree Expand file tree Collapse file tree 4 files changed +50
-4
lines changed Expand file tree Collapse file tree 4 files changed +50
-4
lines changed Original file line number Diff line number Diff line change 6060 "typescript" : " 4.0.2"
6161 },
6262 "scripts" : {
63+ "prepare" : " tsc -p ./tsconfig.build.json" ,
6364 "build" : " rimraf lib && tsc -p ./tsconfig.build.json" ,
6465 "watch" : " jest --watch" ,
6566 "coverage" : " jest --coverage --maxWorkers 4" ,
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 @@ -3,7 +3,14 @@ import type { Model } from 'mongoose';
33export type AliasesMap = Record < string , string > ;
44
55export function prepareAliases ( model : Model < any > ) : AliasesMap | false {
6- const aliases = ( model ?. schema as any ) ?. aliases ;
6+ const aliases = ( model ?. schema as any ) ?. aliases || { } ;
7+
8+ if ( model . discriminators ) {
9+ Object . keys ( model . discriminators ) . forEach ( ( subModelName : string ) => {
10+ const submodel : Model < any > = ( model . discriminators as any ) [ subModelName ] ;
11+ Object . assign ( aliases , ( submodel ?. schema as any ) ?. aliases ) ;
12+ } ) ;
13+ }
714 if ( Object . keys ( aliases ) . length > 0 ) {
815 return aliases ;
916 }
Original file line number Diff line number Diff line change @@ -5201,9 +5201,9 @@ node-fetch-npm@^2.0.2:
52015201 safe-buffer "^5.1.1"
52025202
52035203node-fetch@^2.3.0 :
5204- version "2.6.0 "
5205- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0 .tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd "
5206- integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA ==
5204+ version "2.6.1 "
5205+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1 .tgz#045bd323631f76ed2e2b55573394416b639a0052 "
5206+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw ==
52075207
52085208node-gyp@^5.0.2, node-gyp@^5.1.0 :
52095209 version "5.1.1"
You can’t perform that action at this time.
0 commit comments