From 234462a29fb5c094ce1d9a4d93b5bd3e39690328 Mon Sep 17 00:00:00 2001 From: Markus Grigull <web@grigull.me> Date: Sun, 26 Jun 2016 09:09:08 +0200 Subject: [PATCH] Add basic user model and route For tests open mongodb port and access directly (without docker) --- .gitignore | 1 + config.js | 3 +- docker-compose.yml | 2 ++ models/user.js | 13 ++++++++ routes/users.js | 79 ++++++++++++++++++++++++++++++++++++++++++++++ server.js | 12 +++++++ 6 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 models/user.js create mode 100644 routes/users.js diff --git a/.gitignore b/.gitignore index 87661f0..adac2d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # NodeJS node_modules/ +npm-debug.log # OS X .DS_Store diff --git a/config.js b/config.js index c518b77..8adc409 100644 --- a/config.js +++ b/config.js @@ -1,5 +1,6 @@ module.exports = { 'databaseName': 'VILLAS', - 'databaseURL': 'mongodb://mongo:27017/', + /*'databaseURL': 'mongodb://mongo:27017/',*/ + 'databaseURL': 'mongodb://192.168.99.100:27017/', 'port': 3000 } diff --git a/docker-compose.yml b/docker-compose.yml index ec832e0..b189c0c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,3 +7,5 @@ node: mongo: image: mongo + ports: + - "27017:27017" diff --git a/models/user.js b/models/user.js new file mode 100644 index 0000000..ea436b4 --- /dev/null +++ b/models/user.js @@ -0,0 +1,13 @@ +// include +var mongoose = require('mongoose'); + +var Schema = mongoose.Schema; + +// user model +var userSchema = new Schema({ + username: { type: String, unique: true, required: true }, + password: { type: String, required: true }, + adminLevel: { type: Number, default: 0 } +}); + +module.exports = mongoose.model('User', userSchema); diff --git a/routes/users.js b/routes/users.js new file mode 100644 index 0000000..db1529e --- /dev/null +++ b/routes/users.js @@ -0,0 +1,79 @@ +// include +var express = require('express'); + +var User = require('../models/user'); + +// create router +var router = express.Router(); + +// routes +router.route('/users').get(function(req, res) { + // get all users + User.find(function(err, users) { + if (err) { + return res.send(err); + } + + res.json(users); + }); +}); + +router.route('/users').post(function(req, res) { + // create new user + var user = new User(req.body); + + console.log(req.body); + + user.save(function(err) { + if (err) { + return res.send(err); + } + + res.send({ success: true, message: 'User added' }); + }); +}); + +router.route('/users/:id').put(function(req, res) { + // get user + User.findOne({ _id: req.params.id }, function(err, user) { + if (err) { + return res.send(err); + } + + // update all properties + for (property in req.body) { + user[property] = req.body[property]; + } + + // save the changes + user.save(function(err) { + if (err) { + return res.send(err); + } + + res.send({ success: true, message: 'User updated' }); + }); + }); +}); + +router.route('/users/:id').get(function(req, res) { + User.findOne({ _id: req.params.id }, function(err, user) { + if (err) { + return res.send(err); + } + + res.send(user); + }); +}); + +router.route('/users/:id').delete(function(req, res) { + User.remove({ _id: req.params.id }, function(req, res) { + if (err) { + return res.send(err); + } + + res.send({ success: true, message: 'User deleted' }); + }); +}); + +module.exports = router; diff --git a/server.js b/server.js index 08a5c6d..c3fc86b 100644 --- a/server.js +++ b/server.js @@ -1,16 +1,28 @@ // include modules var express = require('express'); var mongoose = require('mongoose'); +var bodyParser = require('body-parser'); // local include var config = require('./config'); +var users = require('./routes/users'); + +var User = require('./models/user'); + // create application var app = express(); +// configure app +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); + // connect to database mongoose.connect(config.databaseURL + config.databaseName); +// register routes +app.use('/api/v1', users); + // start the app app.listen(config.port, function() { console.log('Express server listening on port ' + config.port); -- GitLab