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:
@@ -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:
|
||||||
|
|||||||
@@ -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'}]},
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
Reference in New Issue
Block a user