iot.darbx.me/server.js

107 lines
2.1 KiB
JavaScript

const http = require('http');
const url = require('url');
const Db = require('tingodb')().Db;
const assert = require('assert');
const hostname = '127.0.0.1';
const port = 12346;
var db = new Db('./db', {});
const server = http.createServer((req, res) => {
if (req.method === 'GET') {
var query = url.parse(req.url, true);
if (!query.query.dataset)
{
res.statusCode = 200;
res.end()
}
else
{
console.log(query.query.dataset)
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
db.collection(query.query.dataset).find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result)
res.end(JSON.stringify(result));
db.close();
});
}
}
if (req.method == 'POST') {
var jsonString = '';
let content = {}
req.on('data', function (data) {
jsonString += data;
});
req.on('end', function () {
try {
content = JSON.parse(jsonString);
} catch (e) {
res.statusCode = 400;
res.end()
return
}
if (!content.name)
{
res.statusCode = 400;
res.end("name is not defined")
}
persistData(content.name,content).then(() => {
res.statusCode = 201;
res.end('ok')
}).catch((error) => {
console.log(error)
res.statusCode = 500;
res.end()
})
});
}
});
function persistData(collection, data)
{
// Fetch a collection to insert document into
var collection = db.collection(collection);
// Insert a single document
return new Promise((resolve, reject) => {
collection.insert(
data, {w:1}, function(err, result) {
console.log("yop")
console.log(result)
console.log(err)
if (err)
{
reject(err)
}
else
{
resolve(result)
}
}
);
})
}
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});