improve field deletion in collection (#6823)
* added filter to updateMany when deleting field * added test cases * added changelog entry
This commit is contained in:
@@ -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' &&
|
||||
|
||||
Reference in New Issue
Block a user