-
Notifications
You must be signed in to change notification settings - Fork 8
DemoDataServer
Oli Sturm edited this page Aug 17, 2017
·
2 revisions
Here is the complete source code for a data server that uses devextreme-query-mongodb. The data in the MongoDB countries
database has this format:
{"_id":{"$oid":"58060596392c9a92f2f86222"},"name":"American Samoa","areaKM2":199,"population":57880}
require('babel-polyfill');
const express = require('express');
const http = require('http');
const https = require('https');
const fs = require('fs');
const mongodb = require('mongodb');
const query = require('devextreme-query-mongodb');
const getOptions = require('devextreme-query-mongodb/options').getOptions;
const mongoUri = 'mongodb://localhost:27017/countries';
const app = express();
app.use(require('cors')());
app.use(require('morgan')('dev'));
function handleError(res, reason, message, code) {
console.error('ERROR: ' + reason);
res.status(code || 500).json({ error: message });
}
function getQueryOptions(req) {
return getOptions(req.query, {
areaKM2: 'int',
population: 'int'
});
}
async function getData(coll, req, res) {
try {
const options = getQueryOptions(req);
if (options.errors.length > 0)
console.error('Errors in query string: ', JSON.stringify(options.errors));
const results = await query(
coll,
options.loadOptions,
options.processingOptions
);
res.status(200).jsonp(results);
} catch (err) {
handleError(res, err, 'Failed to retrieve data');
}
}
mongodb.MongoClient.connect(mongoUri, function(err, database) {
if (err) {
console.error(err);
process.exit(1);
}
app.get('/countries', function(req, res) {
getData(database.collection('countries'), req, res);
});
console.log('Database connection ready');
const httpServer = http.createServer(app);
httpServer.listen(process.env.HTTPPORT || 8080, function() {
const port = httpServer.address().port;
console.log('HTTP server running on port', port);
});
const httpsOptions = {
key: fs.readFileSync('my-ssl-key'),
cert: fs.readFileSync('my-ssl-cert')
};
const httpsServer = https.createServer(httpsOptions, app);
httpsServer.listen(process.env.HTTPSPORT || 8081, function() {
const port = httpsServer.address().port;
console.log('HTTPS server running on port', port);
});
});