-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
68 lines (56 loc) · 1.63 KB
/
server.js
File metadata and controls
68 lines (56 loc) · 1.63 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
var http = require('http'),
sqlRouter = require('sequelize-router'),
compression = require('compression'),
express = require('express'),
app = express(),
schema = require('./schema'),
argv = require('minimist')(process.argv.slice(2), {
default: { port: 1337 }
});
// start the server listening on port `port`
function start(port) {
http.createServer(app).listen(port, function () {
console.log('Express server listening on port ' + port);
});
};
// establish API endpoints for each model
app.use(compression());
app.use('/api', sqlR outer(schema.Species));
app.use('/api', sqlRouter(schema.Sample, {
find: (req, res) => {
var limit = req.query.limit,
speciesWhere = req.query.species;
delete req.query.limit;
delete req.query.species;
schema.Sample.findAll({
attributes: [
'id',
'species_code',
'date',
'latitude',
'longitude',
'depth',
'length',
'number',
'region',
],
where: req.query,
limit: limit,
include: [{
model: schema.Species,
where: speciesWhere
}]
}).then(dbModel => {
dbModel.forEach(s => delete s.dataValues.species);
res.json(dbModel);
}).catch(err => {
res.json(err);
});
}
}));
// establish static assets path
app.use(express.static('public'));
if (require.main === module) {
start(argv['port']);
}
module.exports = { start }