Skip to content

Commit 50735c4

Browse files
committed
Fix update system schema
1 parent b301ea9 commit 50735c4

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

spec/Schema.spec.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,4 +655,21 @@ describe('Schema', () => {
655655
});
656656
done();
657657
});
658+
659+
it('ignore default field when merge with system class', done => {
660+
expect(Schema.buildMergedSchemaObject({
661+
_id: '_User',
662+
username: 'string',
663+
password: 'string',
664+
authData: 'object',
665+
email: 'string',
666+
emailVerified: 'boolean'
667+
},{
668+
authData: {type: 'string'},
669+
customField: {type: 'string'},
670+
})).toEqual({
671+
customField: {type: 'string'}
672+
});
673+
done();
674+
});
658675
});

src/Schema.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,8 +308,12 @@ function mongoFieldTypeToSchemaAPIType(type) {
308308
// is done in mongoSchemaFromFieldsAndClassName.
309309
function buildMergedSchemaObject(mongoObject, putRequest) {
310310
var newSchema = {};
311+
let sysSchemaField = Object.keys(defaultColumns).indexOf(mongoObject._id) === -1 ? [] : Object.keys(defaultColumns[mongoObject._id]);
311312
for (var oldField in mongoObject) {
312313
if (oldField !== '_id' && oldField !== 'ACL' && oldField !== 'updatedAt' && oldField !== 'createdAt' && oldField !== 'objectId') {
314+
if (sysSchemaField.length > 0 && sysSchemaField.indexOf(oldField) !== -1) {
315+
continue;
316+
}
313317
var fieldIsDeleted = putRequest[oldField] && putRequest[oldField].__op === 'Delete'
314318
if (!fieldIsDeleted) {
315319
newSchema[oldField] = mongoFieldTypeToSchemaAPIType(mongoObject[oldField]);
@@ -318,6 +322,9 @@ function buildMergedSchemaObject(mongoObject, putRequest) {
318322
}
319323
for (var newField in putRequest) {
320324
if (newField !== 'objectId' && putRequest[newField].__op !== 'Delete') {
325+
if (sysSchemaField.length > 0 && sysSchemaField.indexOf(newField) !== -1) {
326+
continue;
327+
}
321328
newSchema[newField] = putRequest[newField];
322329
}
323330
}

0 commit comments

Comments
 (0)