const express = require('express');
|
|
const cors = require('cors')
|
|
const bodyParser = require('body-parser')
|
|
const MongoClient = require('mongodb').MongoClient;
|
|
const mongo = require('mongodb')
|
|
const fileUpload = require('express-fileupload');
|
|
//const mongoose = require('mongoose');
|
|
const fs = require('fs');
|
|
|
|
// Connection URL
|
|
const url = 'mongodb://192.168.0.2:27017';
|
|
const dbName = 'electro';
|
|
|
|
var app = express();
|
|
var categories = {};
|
|
var questions = {};
|
|
var image
|
|
|
|
app.use(cors())
|
|
app.use(fileUpload())
|
|
|
|
// parse application/json
|
|
app.use(bodyParser.json())
|
|
// parse application/x-www-form-urlencoded
|
|
app.use(bodyParser.urlencoded({ extended: false }))
|
|
|
|
app.get('/', function (req, res) {
|
|
res.send('Hello World!');
|
|
});
|
|
|
|
app.get('/v1/filteredScooters', (req, res) => {
|
|
|
|
dbFilter = {}
|
|
result = []
|
|
|
|
if(req.query.filter !== undefined){
|
|
req.query.filter.forEach(element => {
|
|
dbFilter[element] = true
|
|
})
|
|
}
|
|
MongoClient.connect(url, function(err, client) {
|
|
const db = client.db(dbName);
|
|
// Get the documents collection
|
|
const collection = db.collection('roller');
|
|
// Insert some documents
|
|
collection.find(dbFilter).project().toArray((err,doc) => {
|
|
res.send(doc)
|
|
})
|
|
})
|
|
})
|
|
|
|
app.get('/v1/questions', (req, res) => {
|
|
res.send([questions[0]])
|
|
//res.send(questions)
|
|
})
|
|
|
|
|
|
app.get('/v1/categories', function(req, res){
|
|
res.send(categories)
|
|
})
|
|
|
|
app.post('/v1/updateScooter', function(req, res) {
|
|
let newScore = "";
|
|
let data = JSON.parse(req.body.data)
|
|
connection.query(`SELECT * FROM Roller WHERE PK_Roller = ${req.query.pk}`, function (error, results) {
|
|
results = results[0]
|
|
for(r in data){
|
|
let value = ((results[r] * results["counter"]) + data[r])/(results["counter"]+1)
|
|
newScore += `${r} = ${value}, `
|
|
}
|
|
newScore += `counter = ${results["counter"] +1}`
|
|
connection.query(`UPDATE Roller SET ${newScore} WHERE PK_Roller = ${req.query.pk}`, function(error, results){
|
|
if(error){
|
|
console.log(error)
|
|
res.sendStatus(500)
|
|
}else {
|
|
res.sendStatus(200)
|
|
}
|
|
})
|
|
|
|
})
|
|
})
|
|
|
|
app.post('/v1/createScooter', function(req, res) {
|
|
|
|
let temp = {}
|
|
req.body.insert.forEach(element => {
|
|
temp[element.name] = element.value
|
|
})
|
|
|
|
MongoClient.connect(url, function(err, client) {
|
|
|
|
const db = client.db(dbName);
|
|
// Get the documents collection
|
|
const collection = db.collection('roller');
|
|
// Insert some documents
|
|
collection.bulkWrite([{insertOne: {"document": temp}}], function(err, result) {
|
|
console.log(result)
|
|
res.send(result.insertedIds['0'])
|
|
});
|
|
});
|
|
|
|
})
|
|
|
|
app.get('/v1/scooterImage', (req, res) => {
|
|
//Image.findOne({'fk_roller': req.query.id}, (err, file) => {
|
|
//console.log(file)
|
|
//res.send(file)
|
|
//})
|
|
MongoClient.connect(url, function(err, client) {
|
|
const db = client.db(dbName);
|
|
// Get the documents collection
|
|
const collection = db.collection('images');
|
|
// Insert some documents
|
|
collection.findOne({fk_roller: mongo.ObjectID(req.query.id)}, (err,doc)=>{
|
|
res.send(doc.data.$binary)
|
|
})
|
|
})
|
|
})
|
|
|
|
app.post('/v1/addImage', (req, res) => {
|
|
|
|
var i = new Image;
|
|
i.data = req.files.file.data
|
|
i.contentType = req.files.file.mimetype
|
|
i.fk_roller = req.query.id
|
|
i.save((err,a) => {
|
|
if(err){
|
|
console.log(err)
|
|
}else{
|
|
res.send(a)
|
|
}
|
|
})
|
|
|
|
})
|
|
|
|
app.get('/v1/update', () => {
|
|
getCategories(categories, 'categories')
|
|
getQuestions(questions, 'questions')
|
|
})
|
|
|
|
const getCategories = (store, collectionName) => {
|
|
MongoClient.connect(url, function(err, client) {
|
|
const db = client.db(dbName);
|
|
// Get the documents collection
|
|
const collection = db.collection(collectionName);
|
|
// Insert some documents
|
|
collection.find().project({_id: 0}).forEach((doc) => {
|
|
let key = Object.keys(doc)[0]
|
|
store[key] = doc[key]
|
|
})
|
|
})
|
|
}
|
|
|
|
const getQuestions = (store, collectionName) => {
|
|
MongoClient.connect(url, function(err, client) {
|
|
const db = client.db(dbName)//.listCollections().toArray(res => {console.log(res)});
|
|
// Get the documents collection
|
|
const collection = db.collection(collectionName);
|
|
collection.find().toArray((res) => {
|
|
//console.log(res)
|
|
})
|
|
// Insert some documents
|
|
collection.find().sort({number:1}).project({_id: 0}).toArray((err,doc) => {
|
|
console.log(doc)
|
|
questions = doc
|
|
})
|
|
})
|
|
}
|
|
|
|
getCategories(categories, 'categories')
|
|
getQuestions(questions, 'questions')
|
|
app.listen(3001);
|
|
|