File tree 3 files changed +45
-2
lines changed
3 files changed +45
-2
lines changed Original file line number Diff line number Diff line change @@ -102,7 +102,7 @@ module.exports = function (app, defaults) {
102
102
103
103
// If we're sideloading, we need to add the includes
104
104
if ( ctx . req . isSideloadingRelationships ) {
105
- requestedIncludes = ctx . req . remotingContext . args . filter . include
105
+ requestedIncludes = utils . setRequestedIncludes ( ctx . req . remotingContext . args . filter . include )
106
106
}
107
107
108
108
if ( model . definition . settings . scope ) {
@@ -119,7 +119,7 @@ module.exports = function (app, defaults) {
119
119
if ( typeof include === 'string' ) {
120
120
requestedIncludes . push ( include )
121
121
} else if ( _ . isArray ( include ) ) {
122
- requestedIncludes = requestedIncludes . concat ( include )
122
+ requestedIncludes = requestedIncludes . concat ( utils . setRequestedIncludes ( include ) )
123
123
}
124
124
}
125
125
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ module.exports = {
19
19
shouldNotApplyJsonApi : shouldNotApplyJsonApi ,
20
20
shouldApplyJsonApi : shouldApplyJsonApi ,
21
21
relationFkOnModelFrom : relationFkOnModelFrom ,
22
+ setRequestedIncludes : setRequestedIncludes ,
22
23
setIncludedRelations : setIncludedRelations
23
24
}
24
25
@@ -238,3 +239,23 @@ function setIncludedRelations (relations, app) {
238
239
}
239
240
return relations
240
241
}
242
+
243
+ function setRequestedIncludes ( include ) {
244
+ if ( ! include ) return undefined
245
+
246
+ if ( typeof include === 'string' ) {
247
+ return include
248
+ }
249
+ if ( include instanceof Array ) {
250
+ return include . map ( function ( inc ) {
251
+ if ( typeof inc === 'string' ) {
252
+ return inc
253
+ }
254
+
255
+ if ( inc instanceof Object ) {
256
+ return inc . relation
257
+ }
258
+ } )
259
+ }
260
+ return include
261
+ }
Original file line number Diff line number Diff line change @@ -127,6 +127,28 @@ describe('include option', function () {
127
127
done ( )
128
128
} )
129
129
} )
130
+ it ( 'should include comments' , function ( done ) {
131
+ request ( app )
132
+ . get ( '/posts/1?filter={"include":["comments"]}' )
133
+ . end ( function ( err , res ) {
134
+ expect ( err ) . to . equal ( null )
135
+ expect ( res . body . included . length ) . equal ( 2 )
136
+ expect ( res . body . included [ 0 ] . type ) . equal ( 'comments' )
137
+ expect ( res . body . included [ 1 ] . type ) . equal ( 'comments' )
138
+ done ( )
139
+ } )
140
+ } )
141
+ it ( 'should include categories with empty attributes object' , function ( done ) {
142
+ request ( app )
143
+ . get ( '/posts/1?filter={"include":[{"relation":"category", "scope": {"fields": ["id"]}}]}' )
144
+ . end ( function ( err , res ) {
145
+ expect ( err ) . to . equal ( null )
146
+ expect ( res . body . included . length ) . equal ( 3 )
147
+ expect ( res . body . included [ 0 ] . type ) . equal ( 'categories' )
148
+ expect ( res . body . included [ 0 ] . attributes ) . to . include ( { } )
149
+ done ( )
150
+ } )
151
+ } )
130
152
} )
131
153
} )
132
154
} )
You can’t perform that action at this time.
0 commit comments