Skip to content

Commit 5208e18

Browse files
fix(reference): fix join of references when model name is different from table name (#892)
1 parent 1607544 commit 5208e18

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/services/query-builder.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class QueryBuilder {
2626
}
2727

2828
async getFieldNamesRequested() {
29-
if (!this._params.fields || !this._params.fields[this._model.collection.name]) { return null; }
29+
if (!this._params.fields || !this._params.fields[this._model.modelName]) { return null; }
3030

3131
// NOTICE: Populate the necessary associations for filters
3232
const associations = this._params.filters
@@ -42,7 +42,7 @@ class QueryBuilder {
4242
}
4343

4444
return _.union(
45-
this._params.fields[this._model.collection.name].split(','),
45+
this._params.fields[this._model.modelName].split(','),
4646
associations,
4747
);
4848
}
@@ -88,7 +88,7 @@ class QueryBuilder {
8888
async joinAllReferences(jsonQuery, alreadyJoinedQuery) {
8989
let fieldNames = await this.getFieldNamesRequested();
9090
const flattenReferenceNames = Flattener
91-
.getFlattenedReferenceFieldsFromParams(this._model.collection.name, this._params.fields);
91+
.getFlattenedReferenceFieldsFromParams(this._model.modelName, this._params.fields);
9292

9393
fieldNames = flattenReferenceNames.concat(fieldNames);
9494

test/tests/services/resources-getter.test.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ describe('service > resources-getter', () => {
2525

2626
Interface.Schemas = {
2727
schemas: {
28-
Order: {
28+
MyOrders: {
2929
name: 'Order',
3030
idField: '_id',
3131
primaryKeys: ['_id'],
@@ -90,9 +90,9 @@ describe('service > resources-getter', () => {
9090
rating: { type: Number },
9191
});
9292

93-
OrderModel = mongoose.model('Order', OrderSchema);
94-
UserModel = mongoose.model('User', UserSchema);
95-
FilmModel = mongoose.model('Film', FilmSchema);
93+
OrderModel = mongoose.model('MyOrders', OrderSchema, 'Order');
94+
UserModel = mongoose.model('User', UserSchema, 'users');
95+
FilmModel = mongoose.model('Film', FilmSchema, 'films');
9696

9797
await Promise.all([
9898
OrderModel.deleteMany({}), UserModel.deleteMany({}), FilmModel.deleteMany({}),
@@ -335,7 +335,7 @@ describe('service > resources-getter', () => {
335335
it('should return all fields', async () => {
336336
expect.assertions(3);
337337
const parameters = {
338-
fields: { films: 'description' },
338+
fields: { Film: 'description' },
339339
page: { number: '1', size: '15' },
340340
searchExtended: '0',
341341
timezone: 'Europe/Paris',
@@ -354,7 +354,7 @@ describe('service > resources-getter', () => {
354354
it('should return only selected fields', async () => {
355355
expect.assertions(3);
356356
const parameters = {
357-
fields: { films: 'title' },
357+
fields: { Film: 'title' },
358358
page: { number: '1', size: '15' },
359359
searchExtended: '0',
360360
timezone: 'Europe/Paris',
@@ -374,7 +374,7 @@ describe('service > resources-getter', () => {
374374
expect.assertions(1);
375375

376376
const parameters = {
377-
fields: { films: 'title' },
377+
fields: { Film: 'title' },
378378
page: { number: '1', size: '15' },
379379
filters: '{"field":"rating","operator":"present","value":null}',
380380
timezone: 'Europe/Paris',
@@ -389,7 +389,7 @@ describe('service > resources-getter', () => {
389389
expect.assertions(3);
390390

391391
const parameters = {
392-
fields: { films: 'title' },
392+
fields: { Film: 'title' },
393393
page: { number: '1', size: '15' },
394394
sort: 'rating',
395395
timezone: 'Europe/Paris',
@@ -406,7 +406,7 @@ describe('service > resources-getter', () => {
406406
expect.assertions(3);
407407

408408
const parameters = {
409-
fields: { films: 'title' },
409+
fields: { Film: 'title' },
410410
page: { number: '1', size: '15' },
411411
sort: '-rating',
412412
timezone: 'Europe/Paris',

0 commit comments

Comments
 (0)