Skip to content

Commit 7e6b382

Browse files
committed
Add error handling to /search.
1 parent 561903d commit 7e6b382

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

server/mongodb-proxy.js

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,21 @@ app.all('/search', function(req, res, next)
2525
logRequest(req.body, "/search")
2626
setCORSHeaders(res);
2727

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
2833
// Parse query string in target
2934
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+
}
3143
});
3244

3345
// 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)
131143
}
132144
);
133145

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+
});
140152

141153
// Get config from server/default.json
142154
var serverConfig = config.get('server');
@@ -300,7 +312,7 @@ function runAggregateQuery( requestId, queryId, body, queryArgs, res, next )
300312

301313
// Runs a query to support templates. Must returns documents of the form
302314
// { _id : <id> }
303-
function doTemplateQuery(queryArgs, db, res, next)
315+
function doTemplateQuery(requestId, queryArgs, db, res, next)
304316
{
305317
if ( queryArgs.err == null)
306318
{
@@ -312,10 +324,15 @@ function doTemplateQuery(queryArgs, db, res, next)
312324
{
313325
if ( err != null )
314326
{
315-
next(err)
327+
queryError(requestId, err, next )
316328
}
317329
else
318330
{
331+
// Remove request from list
332+
if ( requestId in requestsPending )
333+
{
334+
delete requestsPending[requestId]
335+
}
319336
const db = client.db(dbName);
320337
// Get the documents collection
321338
const collection = db.collection(queryArgs.collection);

0 commit comments

Comments
 (0)