@@ -42,7 +42,15 @@ function query(metadata) {
4242}
4343
4444function parseQueryWithDefaults ( queryString ) {
45- var parsedQuery = aqp ( queryString ) ;
45+ var agpOptions = {
46+ casters : {
47+ mongoId : val => mongo . ObjectId ( val )
48+ } ,
49+ castParams : {
50+ _id : 'mongoId'
51+ }
52+ } ;
53+ var parsedQuery = aqp ( queryString , agpOptions ) ;
4654 if ( _ . isObject ( queryString ) ) {
4755 coerceTypes ( queryString , parsedQuery . filter ) ;
4856 }
@@ -60,7 +68,6 @@ function coerceTypes(inputObject, filter) {
6068 }
6169 if ( inputObject [ key ] instanceof mongo . ObjectId ) {
6270 filter [ key ] = mongo . ObjectId ( filter [ key ] ) ;
63- return ;
6471 }
6572 } ) ;
6673}
@@ -72,12 +79,10 @@ function findByIdentifier(metadata) {
7279 return next ( new Error ( "Object has no identifier" ) ) ;
7380 }
7481 var mongoQuery = getIdentifierQuery ( identifier , metadata ) ;
75- if ( Object . keys ( req . query ) . length > 0 ) {
76- var parsedQuery = parseQueryWithDefaults ( req . query ) ;
77- mongoQuery = _ . merge ( { } , parsedQuery . filter , mongoQuery ) ;
78- }
82+ mongoQuery = _ . merge ( { } , req . query , mongoQuery ) ;
83+ var parsedQuery = parseQueryWithDefaults ( mongoQuery ) ;
7984 mongo . db . collection ( metadata . collectionName )
80- . findOne ( mongoQuery , dataRetrieved ) ;
85+ . findOne ( parsedQuery . filter , dataRetrieved ) ;
8186
8287 function dataRetrieved ( err , document ) {
8388 if ( err ) {
@@ -94,7 +99,7 @@ function findByIdentifier(metadata) {
9499
95100function getIdentifierQuery ( identifier , metadata ) {
96101 if ( mongo . isValidObjectId ( identifier ) ) {
97- return { _id : mongo . ObjectId ( identifier ) } ;
102+ return { _id : identifier } ;
98103 }
99104 var identifierQuery = { } ;
100105 identifierQuery [ metadata . identifierName ] = identifier ;
@@ -117,7 +122,7 @@ function updateStatus(metadata) {
117122 if ( _ . isNil ( identifier ) ) {
118123 return next ( new Error ( "Object has no identifier" ) ) ;
119124 }
120- var filter = getIdentifierQuery ( identifier , metadata ) ;
125+ var mongoQuery = getIdentifierQuery ( identifier , metadata ) ;
121126 var now = moment . utc ( ) . toDate ( ) ;
122127 var updateStatement = {
123128 $set : {
@@ -136,8 +141,9 @@ function updateStatus(metadata) {
136141 var options = {
137142 returnOriginal : true
138143 } ;
144+ var parsedQuery = parseQueryWithDefaults ( mongoQuery ) ;
139145 mongo . db . collection ( metadata . collectionName )
140- . findOneAndUpdate ( filter , updateStatement , options , updateComplete ) ;
146+ . findOneAndUpdate ( parsedQuery . filter , updateStatement , options , updateComplete ) ;
141147 function updateComplete ( err , result ) {
142148 if ( err ) {
143149 return next ( ) ;
@@ -154,13 +160,14 @@ function update(metadata) {
154160 if ( _ . isNil ( identifier ) ) {
155161 return next ( new Error ( "Object has no identifier" ) ) ;
156162 }
157- var filter = getIdentifierQuery ( identifier , metadata ) ;
163+ var mongoQuery = getIdentifierQuery ( identifier , metadata ) ;
158164 var replacement = req . body ;
159165 var options = {
160166 returnOriginal : true
161167 } ;
168+ var parsedQuery = parseQueryWithDefaults ( mongoQuery ) ;
162169 mongo . db . collection ( metadata . collectionName )
163- . findOneAndReplace ( filter , replacement , options , updateComplete ) ;
170+ . findOneAndReplace ( parsedQuery . filter , replacement , options , updateComplete ) ;
164171 function updateComplete ( err , result ) {
165172 if ( err ) {
166173 return next ( ) ;
@@ -188,15 +195,16 @@ function getExistingMetadata(metadata) {
188195 if ( _ . isNil ( identifier ) ) {
189196 return next ( new Error ( "Object has no identifier" ) ) ;
190197 }
191- var filter = getIdentifierQuery ( identifier , metadata ) ;
198+ var mongoQuery = getIdentifierQuery ( identifier , metadata ) ;
192199 var options = {
193200 fields : { }
194201 } ;
195202 metadataFields . forEach ( function ( field ) {
196203 options . fields [ field ] = 1 ;
197204 } ) ;
205+ var parsedQuery = parseQueryWithDefaults ( mongoQuery ) ;
198206 mongo . db . collection ( metadata . collectionName )
199- . findOne ( filter , options , dataRetrieved ) ;
207+ . findOne ( parsedQuery . filter , options , dataRetrieved ) ;
200208 function dataRetrieved ( err , document ) {
201209 if ( err ) {
202210 return next ( err ) ;
@@ -224,8 +232,9 @@ function deleteByIdentifier(metadata) {
224232 return next ( new Error ( "Object has no identifier" ) ) ;
225233 }
226234 var mongoQuery = getIdentifierQuery ( identifier , metadata ) ;
235+ var parsedQuery = parseQueryWithDefaults ( mongoQuery ) ;
227236 mongo . db . collection ( metadata . collectionName )
228- . deleteOne ( mongoQuery , documentDeleted ) ;
237+ . deleteOne ( parsedQuery . filter , documentDeleted ) ;
229238
230239 function documentDeleted ( err , result ) {
231240 if ( err ) {
0 commit comments