@@ -25,9 +25,21 @@ app.all('/search', function(req, res, next)
25
25
logRequest ( req . body , "/search" )
26
26
setCORSHeaders ( res ) ;
27
27
28
+ // Generate an id to track requests
29
+ const requestId = ++ requestIdCounter
30
+ // Add state for the queries in this request
31
+ var queryStates = [ ]
32
+ requestsPending [ requestId ] = queryStates
28
33
// Parse query string in target
29
34
queryArgs = parseQuery ( req . body . target , { } )
30
- doTemplateQuery ( queryArgs , req . body . db , res , next ) ;
35
+ if ( queryArgs . err != null )
36
+ {
37
+ queryError ( requestId , queryArgs . err , next )
38
+ }
39
+ else
40
+ {
41
+ doTemplateQuery ( requestId , queryArgs , req . body . db , res , next ) ;
42
+ }
31
43
} ) ;
32
44
33
45
// State for queries in flight. As results come it, acts as a semaphore and sends the results back
@@ -131,12 +143,12 @@ app.all('/query', function(req, res, next)
131
143
}
132
144
) ;
133
145
134
- // app.use(function(error, req, res, next)
135
- // {
136
- // // Any request to this server will get here, and will send an HTTP
137
- // // response with the error message
138
- // res.status(500).json({ message: error.message });
139
- // });
146
+ app . use ( function ( error , req , res , next )
147
+ {
148
+ // Any request to this server will get here, and will send an HTTP
149
+ // response with the error message
150
+ res . status ( 500 ) . json ( { message : error . message } ) ;
151
+ } ) ;
140
152
141
153
// Get config from server/default.json
142
154
var serverConfig = config . get ( 'server' ) ;
@@ -300,7 +312,7 @@ function runAggregateQuery( requestId, queryId, body, queryArgs, res, next )
300
312
301
313
// Runs a query to support templates. Must returns documents of the form
302
314
// { _id : <id> }
303
- function doTemplateQuery ( queryArgs , db , res , next )
315
+ function doTemplateQuery ( requestId , queryArgs , db , res , next )
304
316
{
305
317
if ( queryArgs . err == null )
306
318
{
@@ -312,10 +324,15 @@ function doTemplateQuery(queryArgs, db, res, next)
312
324
{
313
325
if ( err != null )
314
326
{
315
- next ( err )
327
+ queryError ( requestId , err , next )
316
328
}
317
329
else
318
330
{
331
+ // Remove request from list
332
+ if ( requestId in requestsPending )
333
+ {
334
+ delete requestsPending [ requestId ]
335
+ }
319
336
const db = client . db ( dbName ) ;
320
337
// Get the documents collection
321
338
const collection = db . collection ( queryArgs . collection ) ;
0 commit comments