Skip to content

Commit a8baac5

Browse files
committed
fix(FieldsConverter): Pass fields with MongoID type in Embedded Schemas (except _id)
1 parent c1f1850 commit a8baac5

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

src/__mocks__/contactsSchema.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const ContactsSchema = new Schema(
55
phones: [String],
66
email: String,
77
skype: String,
8+
locationId: Schema.Types.ObjectId,
89
}
910
);
1011

src/__tests__/fieldConverter-test.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,12 @@ describe('fieldConverter', () => {
167167
});
168168

169169
it('should have embedded fields', () => {
170-
expect(embeddedFields.email).to.be.defined;
170+
expect(embeddedFields.email).to.be.ok;
171+
});
172+
173+
it('should have embedded fields with MongoID type, except pseudoID', () => {
174+
expect(embeddedFields.locationId).to.be.ok;
175+
expect(embeddedFields._id).to.be.undefined;
171176
});
172177

173178
it('should skip pseudo mongoose _id field', () => {

src/fieldsConverter.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,9 @@ export function deriveComplexType(field: MongooseFieldT): ComplexTypesT {
231231
function removePseudoIdField(typeComposer: TypeComposer): void {
232232
// remove pseudo object id mongoose field
233233
const gqFields = typeComposer.getFields();
234-
Object.keys(gqFields).forEach((name) => {
235-
if (gqFields[name].type === GraphQLMongoID) {
234+
const pseudoFieldNames = ['_id'];
235+
pseudoFieldNames.forEach((name) => {
236+
if (gqFields[name] && gqFields[name].type === GraphQLMongoID) {
236237
typeComposer.removeField(name);
237238
}
238239
});

0 commit comments

Comments
 (0)