@@ -101,8 +101,8 @@ function buildObjectType(name: string, fields: Field[], parentName: string, base
101
101
extensions : { complexity : 20 } ,
102
102
async resolve ( parent , args , context ) {
103
103
const value = parent [ field . name ] ;
104
- const locale = args . locale || context . locale ;
105
- const fallbackLocale = args . fallbackLocale || context . fallbackLocale ;
104
+ const locale = args . locale || context . req . locale ;
105
+ const fallbackLocale = args . fallbackLocale || context . req . fallbackLocale ;
106
106
107
107
let id = value ;
108
108
@@ -229,12 +229,6 @@ function buildObjectType(name: string, fields: Field[], parentName: string, base
229
229
230
230
const types = relationTo . map ( ( relation ) => this . collections [ relation ] . graphQL . type ) ;
231
231
232
- let resolveType = function resolveType ( data ) {
233
- return this . collections [ data . collection ] . graphQL . type . name ;
234
- } ;
235
-
236
- resolveType = resolveType . bind ( this ) ;
237
-
238
232
type = new GraphQLObjectType ( {
239
233
name : `${ relationshipName } _Relationship` ,
240
234
fields : {
@@ -245,7 +239,9 @@ function buildObjectType(name: string, fields: Field[], parentName: string, base
245
239
type : new GraphQLUnionType ( {
246
240
name : relationshipName ,
247
241
types,
248
- resolveType,
242
+ async resolveType ( data , { req : { payload } } ) {
243
+ return payload . collections [ data . collection ] . graphQL . type . name ;
244
+ } ,
249
245
} ) ,
250
246
} ,
251
247
} ,
@@ -294,24 +290,25 @@ function buildObjectType(name: string, fields: Field[], parentName: string, base
294
290
extensions : { complexity : 10 } ,
295
291
async resolve ( parent , args , context ) {
296
292
const value = parent [ field . name ] ;
297
- const locale = args . locale || context . locale ;
298
- const fallbackLocale = args . fallbackLocale || context . fallbackLocale ;
293
+ const locale = args . locale || context . req . locale ;
294
+ const fallbackLocale = args . fallbackLocale || context . req . fallbackLocale ;
299
295
let relatedCollectionSlug = field . relationTo ;
300
296
301
297
if ( hasManyValues ) {
302
298
const results = [ ] ;
303
299
const resultPromises = [ ] ;
304
300
305
- const createPopulationPromise = async ( relatedDoc ) => {
301
+ const createPopulationPromise = async ( relatedDoc , i ) => {
306
302
let id = relatedDoc ;
303
+ let collectionSlug = field . relationTo ;
307
304
308
305
if ( isRelatedToManyCollections ) {
309
- relatedCollectionSlug = relatedDoc . relationTo ;
306
+ collectionSlug = relatedDoc . relationTo ;
310
307
id = relatedDoc . value ;
311
308
}
312
309
313
310
const result = await find ( {
314
- collection : collections [ relatedCollectionSlug as string ] ,
311
+ collection : collections [ collectionSlug as string ] ,
315
312
where : {
316
313
...( args . where || { } ) ,
317
314
_id : {
@@ -329,22 +326,22 @@ function buildObjectType(name: string, fields: Field[], parentName: string, base
329
326
330
327
if ( result . docs . length === 1 ) {
331
328
if ( isRelatedToManyCollections ) {
332
- results . push ( {
333
- relationTo : relatedCollectionSlug ,
329
+ results [ i ] = {
330
+ relationTo : collectionSlug ,
334
331
value : {
335
332
...result . docs [ 0 ] ,
336
- collection : relatedCollectionSlug ,
333
+ collection : collectionSlug ,
337
334
} ,
338
- } ) ;
335
+ } ;
339
336
} else {
340
- results . push ( result . docs [ 0 ] ) ;
337
+ [ results [ i ] ] = result . docs ;
341
338
}
342
339
}
343
340
} ;
344
341
345
342
if ( value ) {
346
- value . forEach ( ( relatedDoc ) => {
347
- resultPromises . push ( createPopulationPromise ( relatedDoc ) ) ;
343
+ value . forEach ( ( relatedDoc , i ) => {
344
+ resultPromises . push ( createPopulationPromise ( relatedDoc , i ) ) ;
348
345
} ) ;
349
346
}
350
347
0 commit comments