File tree 4 files changed +50
-4
lines changed
4 files changed +50
-4
lines changed Original file line number Diff line number Diff line change 60
60
"typescript" : " 4.0.2"
61
61
},
62
62
"scripts" : {
63
+ "prepare" : " tsc -p ./tsconfig.build.json" ,
63
64
"build" : " rimraf lib && tsc -p ./tsconfig.build.json" ,
64
65
"watch" : " jest --watch" ,
65
66
"coverage" : " jest --coverage --maxWorkers 4" ,
Original file line number Diff line number Diff line change @@ -25,5 +25,43 @@ describe('Resolver helper `alises` ->', () => {
25
25
const aliases = prepareAliases ( User ) ;
26
26
expect ( aliases ) . toEqual ( false ) ;
27
27
} ) ;
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
+ } ) ;
28
66
} ) ;
29
67
} ) ;
Original file line number Diff line number Diff line change @@ -3,7 +3,14 @@ import type { Model } from 'mongoose';
3
3
export type AliasesMap = Record < string , string > ;
4
4
5
5
export 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
+ }
7
14
if ( Object . keys ( aliases ) . length > 0 ) {
8
15
return aliases ;
9
16
}
Original file line number Diff line number Diff line change @@ -5201,9 +5201,9 @@ node-fetch-npm@^2.0.2:
5201
5201
safe-buffer "^5.1.1"
5202
5202
5203
5203
node-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 ==
5207
5207
5208
5208
node-gyp@^5.0.2, node-gyp@^5.1.0 :
5209
5209
version "5.1.1"
You can’t perform that action at this time.
0 commit comments