Allows undefined values to pass from mongo to database controler (#4973)

* Allows undefined values to pass from mongo to database controler

* Adds changelog
This commit is contained in:
Florent Vilmart
2018-08-16 11:24:33 -04:00
committed by GitHub
parent 942b9b5b1a
commit b740db335b
3 changed files with 30 additions and 3 deletions

View File

@@ -7,6 +7,7 @@
* Adds Pipeline Operator to Aggregate Router * Adds Pipeline Operator to Aggregate Router
#### Bug Fixes: #### Bug Fixes:
* Fixes issue that would crash the server when mongo objects had undefined values [#4966](https://github.com/parse-community/parse-server/issues/4966)
* Fixes issue that prevented ACL's from being used with `select` (see [#571](https://github.com/parse-community/Parse-SDK-JS/issues/571)) * Fixes issue that prevented ACL's from being used with `select` (see [#571](https://github.com/parse-community/Parse-SDK-JS/issues/571))
#### Dependency updates: #### Dependency updates:

View File

@@ -354,6 +354,32 @@ describe('parseObjectToMongoObjectForCreate', () => {
done(); done();
}); });
it('object with undefined nested values', () => {
const input = {
_id: 'vQHyinCW1l',
urls: { firstUrl: 'https://', secondUrl: undefined }, };
const output = transform.mongoObjectToParseObject(null, input, {
fields: {
urls: { type: 'Object' }
}
});
expect(output.urls).toEqual({
firstUrl: 'https://', secondUrl: undefined
});
});
it('undefined objects', () => {
const input = {
_id: 'vQHyinCW1l',
urls: undefined, };
const output = transform.mongoObjectToParseObject(null, input, {
fields: {
urls: { type: 'Object' }
}
});
expect(output.urls).toBeUndefined();
});
it('$regex in $all list', (done) => { it('$regex in $all list', (done) => {
const input = { const input = {
arrayField: {'$all': [{$regex: '^\\Qone\\E'}, {$regex: '^\\Qtwo\\E'}, {$regex: '^\\Qthree\\E'}]}, arrayField: {'$all': [{$regex: '^\\Qone\\E'}, {$regex: '^\\Qtwo\\E'}, {$regex: '^\\Qthree\\E'}]},

View File

@@ -1078,11 +1078,11 @@ const nestedMongoObjectToNestedParseObject = mongoObject => {
case 'string': case 'string':
case 'number': case 'number':
case 'boolean': case 'boolean':
return mongoObject;
case 'undefined': case 'undefined':
return mongoObject;
case 'symbol': case 'symbol':
case 'function': case 'function':
throw 'bad value in mongoObjectToParseObject'; throw 'bad value in nestedMongoObjectToNestedParseObject';
case 'object': case 'object':
if (mongoObject === null) { if (mongoObject === null) {
return null; return null;
@@ -1137,8 +1137,8 @@ const mongoObjectToParseObject = (className, mongoObject, schema) => {
case 'string': case 'string':
case 'number': case 'number':
case 'boolean': case 'boolean':
return mongoObject;
case 'undefined': case 'undefined':
return mongoObject;
case 'symbol': case 'symbol':
case 'function': case 'function':
throw 'bad value in mongoObjectToParseObject'; throw 'bad value in mongoObjectToParseObject';