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
#### 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))
#### Dependency updates:

View File

@@ -354,6 +354,32 @@ describe('parseObjectToMongoObjectForCreate', () => {
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) => {
const input = {
arrayField: {'$all': [{$regex: '^\\Qone\\E'}, {$regex: '^\\Qtwo\\E'}, {$regex: '^\\Qthree\\E'}]},

View File

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