Skip to content
Snippets Groups Projects
Commit 234462a2 authored by Markus Grigull's avatar Markus Grigull
Browse files

Add basic user model and route

For tests open mongodb port and access directly (without docker)
parent e539b0d1
No related branches found
No related tags found
No related merge requests found
# NodeJS
node_modules/
npm-debug.log
# OS X
.DS_Store
module.exports = {
'databaseName': 'VILLAS',
'databaseURL': 'mongodb://mongo:27017/',
/*'databaseURL': 'mongodb://mongo:27017/',*/
'databaseURL': 'mongodb://192.168.99.100:27017/',
'port': 3000
}
......@@ -7,3 +7,5 @@ node:
mongo:
image: mongo
ports:
- "27017:27017"
// 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);
// 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;
// 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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment