|
|
@ -0,0 +1,184 @@ |
|
|
|
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'; |
|
|
|
|
|
|
|
// Database Name
|
|
|
|
const dbName = 'electro'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mongoose.connect('mongodb://192.168.0.2:27017/electro', {useNewUrlParser: true}) |
|
|
|
var imageSchema = new mongoose.Schema({ data: Buffer, contentType: String, fk_roller: {type: mongoose.Schema.Types.ObjectId, ref: "roller"} }) |
|
|
|
|
|
|
|
var Image = mongoose.model('images', imageSchema); |
|
|
|
|
|
|
|
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) |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
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); |
|
|
|
// Get the documents collection
|
|
|
|
const collection = db.collection(collectionName); |
|
|
|
// 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); |
|
|
|
|