improve field deletion in collection (#6823)

* added filter to updateMany when deleting field

* added test cases

* added changelog entry
This commit is contained in:
Manuel
2020-07-27 02:22:04 +02:00
committed by GitHub
parent 9ba9620bdf
commit 5b71993175
3 changed files with 44 additions and 1 deletions

View File

@@ -351,6 +351,43 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
expect(postIndexPlan.executionStats.executionStages.stage).toBe('FETCH');
});
it('should delete field without index', async () => {
const database = Config.get(Parse.applicationId).database;
const obj = new Parse.Object('MyObject');
obj.set("test", 1);
await obj.save();
const schemaBeforeDeletion = await new Parse.Schema('MyObject').get();
await database.adapter.deleteFields(
"MyObject",
schemaBeforeDeletion,
["test"]
);
const schemaAfterDeletion = await new Parse.Schema('MyObject').get();
expect(schemaBeforeDeletion.fields.test).toBeDefined();
expect(schemaAfterDeletion.fields.test).toBeUndefined();
});
it('should delete field with index', async () => {
const database = Config.get(Parse.applicationId).database;
const obj = new Parse.Object('MyObject');
obj.set("test", 1);
await obj.save();
const schemaBeforeDeletion = await new Parse.Schema('MyObject').get();
await database.adapter.ensureIndex(
'MyObject',
schemaBeforeDeletion,
['test']
);
await database.adapter.deleteFields(
"MyObject",
schemaBeforeDeletion,
["test"]
);
const schemaAfterDeletion = await new Parse.Schema('MyObject').get();
expect(schemaBeforeDeletion.fields.test).toBeDefined();
expect(schemaAfterDeletion.fields.test).toBeUndefined();
});
if (
semver.satisfies(process.env.MONGODB_VERSION, '>=4.0.4') &&
process.env.MONGODB_TOPOLOGY === 'replicaset' &&