-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
83 lines (75 loc) · 2.47 KB
/
app.js
File metadata and controls
83 lines (75 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
var express = require('express');
var app = express();
var mongoose = require('mongoose');
var config = require('./config');
require('./Businesses');
var Business = mongoose.model('Business');
mongoose.connect(config.dbUrl);
var totalNumRecords;
var output;
/*GET /businesses */
app.get(config.businessesURI, function( req, res ){
var page = req.query.page || 1;
var recordsPerPage = req.query.records_per_page || 50;
var offset = (page-1)*recordsPerPage;
output = {'page': parseInt(page), 'records_per_page': parseInt(recordsPerPage), 'businesses': []};
res.type('json');
if(isNaN(page) || parseInt(page) < 1){
if(isNaN(page))
output.page = page;
output.message = 'Invalid parameter - Please input a positive integer for the page.';
res.status(400).json(output);
}
else if(isNaN(recordsPerPage) || parseInt(recordsPerPage) < 1){
if(isNaN(recordsPerPage))
output.records_per_page = recordsPerPage;
output.message = 'Invalid parameter - Please input a positive integer for the records_per_page.';
res.status(400).json(output);
}
else if((page*recordsPerPage) > totalNumRecords){
output.message = 'Parameter out of bounds - The requested page is out of bounds of the dataset.';
res.status(400).json(output);
}
else{
recordsPerPage = parseInt(recordsPerPage);
Business.find().limit(recordsPerPage).skip(offset).sort({id: 'asc'}).exec(function(err, data){
if(err){
output.message = err;
res.status(400);
}
output.businesses = data;
res.json(output);
});
}
});
/*GET /businesses/{id} */
app.get(config.businessesURI+'/:id', function( req, res){
var requestedId = req.params.id;
output = {};
res.type('json');
Business.where({ id: requestedId }).findOne(function (err,record){
if(err){
output.message = err;
res.status(400);
}
else if(record){
output = record;
}
else {
output.message = 'Not found - The requested id was not found: ' + requestedId;
res.status(404);
}
res.json(output);
});
});
function setTotalNumRecords(cb) {
Business.count({}, function(err, count){ cb(count);});
}
var server = app.listen(config.serverPort,config.serverAddress, function() {
var host = server.address().address;
var port = server.address().port;
setTotalNumRecords(function(count) {
totalNumRecords = count;
console.log("Now listening at "+host+":"+port);
});
});