Skip to content

Commit cee9327

Browse files
fix: return data of field who have the same name as model (#880)
1 parent fd0b4e0 commit cee9327

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

src/services/requested-fields-extractor.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ function extractRequestedFields(requestedFields, modelOrAssociation, schemas) {
6161
))
6262
.flat();
6363

64-
const modelFields = requestedFields[modelOrAssociation.name].split(',')
65-
.filter((fieldName) => !requestedFields[fieldName]);
64+
const modelFields = requestedFields[modelOrAssociation.name]
65+
.split(',')
66+
.filter((fieldName) =>
67+
Object.prototype.hasOwnProperty.call(modelOrAssociation.rawAttributes, fieldName));
6668

6769
const smartFields = extractRequestedSmartField(requestedFields, schemas[modelOrAssociation.name]);
6870

test/services/requested-fields-extractor.test.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ describe('services > requested-fields-extractor', () => {
2323
name: 'user',
2424
primaryKeys: { id: null, uid: null },
2525
associations: {},
26+
rawAttributes: {
27+
id: {},
28+
uid: {},
29+
name: {},
30+
},
2631
};
2732

2833
const schemas = {
@@ -51,6 +56,11 @@ describe('services > requested-fields-extractor', () => {
5156
name: 'user',
5257
primaryKeys: { id: null, uid: null },
5358
associations: {},
59+
rawAttributes: {
60+
id: {},
61+
uid: {},
62+
name: {},
63+
},
5464
};
5565

5666
const schemas = {
@@ -68,6 +78,38 @@ describe('services > requested-fields-extractor', () => {
6878
expect(result).toStrictEqual(['id', 'name']);
6979
});
7080

81+
it('should include field with same name as the model', () => {
82+
expect.assertions(1);
83+
84+
const fields = {
85+
user: 'id,user',
86+
};
87+
88+
const model = {
89+
name: 'user',
90+
primaryKeys: { id: null },
91+
associations: {},
92+
rawAttributes: {
93+
id: {},
94+
user: {},
95+
},
96+
};
97+
98+
const schemas = {
99+
user: {
100+
name: 'user',
101+
fields: [{
102+
field: 'user',
103+
isVirtual: false,
104+
}],
105+
},
106+
};
107+
108+
const result = extractRequestedFields(fields, model, schemas);
109+
110+
expect(result).toStrictEqual(['id', 'user']);
111+
});
112+
71113
it('should include all associations\' requested fields', () => {
72114
expect.assertions(1);
73115

@@ -87,6 +129,11 @@ describe('services > requested-fields-extractor', () => {
87129
},
88130
},
89131
},
132+
rawAttributes: {
133+
id: {},
134+
uid: {},
135+
name: {},
136+
},
90137
};
91138

92139
const schemas = {
@@ -130,6 +177,12 @@ describe('services > requested-fields-extractor', () => {
130177
},
131178
},
132179
},
180+
rawAttributes: {
181+
id: {},
182+
uid: {},
183+
name: {},
184+
account: {},
185+
},
133186
};
134187

135188
const schemas = {
@@ -180,6 +233,12 @@ describe('services > requested-fields-extractor', () => {
180233
},
181234
},
182235
},
236+
rawAttributes: {
237+
id: {},
238+
uid: {},
239+
name: {},
240+
account: {},
241+
},
183242
};
184243

185244
const schemas = {
@@ -222,6 +281,10 @@ describe('services > requested-fields-extractor', () => {
222281
name: 'user',
223282
primaryKeys: { id: null, uid: null },
224283
associations: {},
284+
rawAttributes: {
285+
id: {},
286+
uid: {},
287+
},
225288
};
226289

227290
const schemas = {

0 commit comments

Comments
 (0)