Skip to content
This repository was archived by the owner on May 19, 2025. It is now read-only.

Commit 329aac3

Browse files
authored
Get include: 'somerel' working (#618)
* Include relationships fix attempt * Dont pluralize included key * fix rel model name for serializer
1 parent 0c7b67f commit 329aac3

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

addon/adapters/firestore.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,10 +332,12 @@ const includeCollectionRelationships = (collection: firestore.QuerySnapshot, sto
332332
if (relationship.kind == 'belongsTo') {
333333
const result = includes.find((r:any) => r.id == doc.data()[key]);
334334
if (result) {
335+
if (!(doc as any)._document) { (doc as any)._document = {} }
335336
if (!(doc as any)._document._included) { (doc as any)._document._included = {} }
336337
(doc as any)._document._included[key] = result;
337338
}
338339
} else {
340+
if (!(doc as any)._document) { (doc as any)._document = {} }
339341
if (!(doc as any)._document._included) { (doc as any)._document._included = {} }
340342
(doc as any)._document._included[pluralKey] = includes;
341343
}
@@ -358,8 +360,9 @@ const includeRelationships = <T=any>(promise: Promise<T>, store: DS.Store, adapt
358360
promise,
359361
...hasManyRelationships.map(r => adapter.findHasMany(store, snapshot, '', r))
360362
]).then(([doc, ...includes]) => {
363+
if (!(doc as any)._document) { (doc as any)._document = {} }
361364
doc._document._included = hasManyRelationships.reduce((c, e, i) => {
362-
c[pluralize(e.key)] = includes[i];
365+
c[e.key] = includes[i];
363366
return c;
364367
}, {});
365368
return Promise.all([
@@ -384,4 +387,4 @@ declare module 'ember-data' {
384387
interface AdapterRegistry {
385388
'firestore': FirestoreAdapter;
386389
}
387-
}
390+
}

addon/serializers/firestore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ const normalizeRelationships = (store: DS.Store, modelClass: DS.Model, attribute
6464
const attribute = attributes.data()[key];
6565
const payload = attributes._document && attributes._document._included && attributes._document._included[key];
6666
if (payload) {
67-
const modelName = singularize(relationship.key) as never;
67+
const modelName = relationship.meta.type as never;
6868
const modelClass = store.modelFor(modelName);
6969
const serializer = store.serializerFor(modelName) as any;
7070
const { data } = relationship.kind === 'belongsTo' ? serializer.normalizeSingleResponse(store, modelClass, payload) : serializer.normalizeArrayResponse(store, modelClass, payload);
@@ -142,4 +142,4 @@ export const normalize = (store: DS.Store, modelClass: DS.Model, snapshot: Docum
142142
const { relationships, included } = normalizeRelationships(store, modelClass, snapshot);
143143
const data = { id, type, attributes, relationships };
144144
return { data, included };
145-
}
145+
}

0 commit comments

Comments
 (0)