added mongose and express, modified server, for testing purpose added user controller, model and routes

This commit is contained in:
Amra Šabić
2018-02-17 11:44:35 +01:00
parent e51d046374
commit fda840d119
6 changed files with 231 additions and 4 deletions

View File

@@ -0,0 +1,54 @@
'use strict';
var mongoose = require('mongoose'),
User = mongoose.model('User');
exports.list_all = function(req, res) {
User.find({}, function(err, user) {
if (err) {
res.send(err);
}
res.json(user);
});
};
exports.add_user = function(req, res) {
var new_user = new User(req.body);
new_user.save(function(err, user) {
if (err) {
res.send(err);
}
res.json(user);
});
};
exports.get_user = function(req, res) {
User.findById(req.params.userId, function(err, user) {
if (err) {
res.send(err);
}
res.json(user);
});
};
// TODO modify to update user permitions
exports.update_user = function(req, res) {
User.findOneAndUpdate({_id: req.params.userId}, req.body, {new: true}, function(err, user) {
if (err) {
res.send(err);
}
res.json(user);
});
};
// TODO modify to remove user permitions / group
exports.remove_user = function(req, res) {
User.remove({
_id: req.params.userId
}, function(err, user) {
if (err) {
res.send(err);
}
res.json({ message: 'User successfully deleted' });
});
};

View File

@@ -0,0 +1,18 @@
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
// TODO modify later, just for testing
name: {
type: String,
required: 'Name'
},
Created_date: {
type: Date,
default: Date.now
}
});
module.exports = mongoose.model('User', UserSchema);

View File

@@ -0,0 +1,15 @@
'use strict';
module.exports = function(app) {
var user = require('../controllers/userController');
// TODO Routes
app.route('/users')
.get(user.list_all)
.post(user.add_user);
app.route('/users/:userId')
.get(user.get_user)
.put(user.update_user)
.delete(user.remove_user);
};

131
package-lock.json generated
View File

@@ -88,6 +88,14 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
"async": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz",
"integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=",
"requires": {
"lodash": "4.17.5"
}
},
"async-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
@@ -127,6 +135,11 @@
"integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
"dev": true
},
"bluebird": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
"integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw="
},
"body-parser": {
"version": "1.18.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
@@ -198,6 +211,11 @@
"to-regex": "3.0.1"
}
},
"bson": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz",
"integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw="
},
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -2053,6 +2071,11 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
"kareem": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.0.4.tgz",
"integrity": "sha512-emosNz0ruOjDkyH2QvnL8m65Mzl8D0IBP3PukQmGl2cjhqMrQajq3OcLdLeBV5GzPfqmsuDQB0WkZOHVhyK6jg=="
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -2077,12 +2100,22 @@
"set-getter": "0.1.0"
}
},
"lodash": {
"version": "4.17.5",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
"integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
},
"lodash.endswith": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz",
"integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=",
"dev": true
},
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
},
"lodash.isfunction": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
@@ -2237,6 +2270,77 @@
}
}
},
"mongodb": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.2.tgz",
"integrity": "sha512-E50FmpSQchZAimn2uPIegoNoH9UQYR1yiGHtQPmmg8/Ekc97w6owHoqaBoz+assnd9V5LxMzmQ/VEWMsQMgZhQ==",
"requires": {
"mongodb-core": "3.0.2"
}
},
"mongodb-core": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.2.tgz",
"integrity": "sha512-p1B0qwFQUw6C1OlFJnrOJp8KaX7MuGoogRbTaupRt0y+pPRkMllHWtE9V6i1CDtTvI3/3sy2sQwqWez7zuXEAA==",
"requires": {
"bson": "1.0.4",
"require_optional": "1.0.1"
}
},
"mongoose": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.6.tgz",
"integrity": "sha512-VgvQfyO4Un1NxNjlDWscByGEs+JC76jdnxfHO5X83d+LvzWoSkRSVbq+9Zio162DpHnkI5pJy/mI2VdgiiBqZQ==",
"requires": {
"async": "2.1.4",
"bson": "1.0.4",
"kareem": "2.0.4",
"lodash.get": "4.4.2",
"mongodb": "3.0.2",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.3.0",
"mquery": "3.0.0",
"ms": "2.0.0",
"regexp-clone": "0.0.1",
"sliced": "1.0.1"
}
},
"mongoose-legacy-pluralize": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
"mpath": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.3.0.tgz",
"integrity": "sha1-elj3iem1/TyUUgY0FXlg8mvV70Q="
},
"mquery": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz",
"integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==",
"requires": {
"bluebird": "3.5.0",
"debug": "2.6.9",
"regexp-clone": "0.0.1",
"sliced": "0.0.5"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"sliced": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz",
"integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8="
}
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -2612,6 +2716,11 @@
"extend-shallow": "2.0.1"
}
},
"regexp-clone": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz",
"integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk="
},
"registry-auth-token": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
@@ -2649,6 +2758,20 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
"require_optional": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
"integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
"requires": {
"resolve-from": "2.0.0",
"semver": "5.5.0"
}
},
"resolve-from": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@@ -2663,8 +2786,7 @@
"semver": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
"dev": true
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
},
"semver-diff": {
"version": "2.1.0",
@@ -2769,6 +2891,11 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"sliced": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
},
"snapdragon": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz",

View File

@@ -21,6 +21,7 @@
"nodemon": "^1.15.0"
},
"dependencies": {
"express": "^4.16.2"
"express": "^4.16.2",
"mongoose": "^5.0.6"
}
}

View File

@@ -1,7 +1,19 @@
var express = require('express'),
app = express(),
port = process.env.PORT || 3000;
port = process.env.PORT || 3000,
mongoose = require('mongoose'),
User = require('./api/models/userModel'), //created model loading here
bodyParser = require('body-parser');
// mongoose instance connection url connection
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Userdb');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var routes = require('./api/routes/userRoutes'); //importing route
routes(app); //register the route
app.listen(port);
console.log('API server started on: ' + port);