Skip to content

Instantly share code, notes, and snippets.

@arisetyo
Last active August 29, 2015 13:57
Show Gist options
  • Save arisetyo/9581965 to your computer and use it in GitHub Desktop.
Save arisetyo/9581965 to your computer and use it in GitHub Desktop.
MEAN tutorial, Part 1
var mongoose = require('mongoose');
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
// SCHEMAS
var User = new Schema({
fullname: {type: String, required: true},
email: {type: String, required: true},
password: {type: String, required: true}
});
// EXPORTS
module.exports.mongoose = mongoose;
module.exports.SchemaUser = User;
mongoose.connect('mongodb://localhost/belajarnode');
//server.js
var application_root = __dirname,
express = require('express'),
path = require("path"),
url = require("url"),
request = require("request"),
User = require('./routes/user');
var app = express();
app.configure(function () {
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(app.router);
app.use(express.static(path.join(application_root, "public")));
});
//-------------------- USER --------------------
app.post('/api/user/create/', function(req, res){
User.CreateDoc(req, function(err, success) {
if(err) throw err;
else res.send(success);
});
});
app.get('/api/user/retrieveall/', function(req, res) {
User.RetrieveAll(function(err, success) {
if(err) throw err;
else res.send(success);
});
});
app.get('/api/user/retrieveid/:id', function(req, res) {
User.RetrieveById(req.params.id, function(err, success) {
if(err) throw err;
else res.send(success);
});
});
app.post('/api/user/update', function(req, res) {
User.UpdateDoc(req, function(err, success) {
if(err) throw err;
else res.send(success);
});
});
app.post('/api/user/delete', function(req, res) {
User.DeleteDoc(req.body.id, function(err, success) {
if(err) throw err;
else res.send(success);
});
});
//======================= START SERVER ======================
app.listen(8090);
console.log('testing server is listening on port 8090...');
var db = require('../db');
var ModelUser = db.mongoose.model('User', db.SchemaUser);
/*
* *****************
* MODULES TO EXPORT
* *****************
*/
module.exports.CreateDoc = CreateDoc;
module.exports.RetrieveAll = RetrieveAll;
module.exports.RetrieveById = RetrieveById;
module.exports.UpdateDoc = UpdateDoc;
module.exports.DeleteDoc = DeleteDoc;
/*
* *********
* FUNCTIONS
* *********
*/
function CreateDoc(req, callback) {
var instance = new ModelUser();
instance.fullname = req.body.fullname;
instance.email = req.body.email;
instance.password = req.body.password;
instance.save(function (err,doc) {
if(err) callback(err);
else callback(null, {"status":"OK","new_id":doc._id});
});
}
function RetrieveAll(callback) {
ModelUser.find({}, callback);
}
function RetrieveById(id, callback) {
ModelUser.findOne({_id:id}, callback);
}
function UpdateDoc(req, callback) {
var newValues = {
"fullname": req.body.fullname,
"email": req.body.email,
"password": req.body.password,
};
ModelUser.update( {_id:req.body.id}, {"$set":newValues}, function (err) {
if(err) callback(err);
else callback(null, {"status":"OK"});
});
}
function DeleteDoc(id, callback) {
ModelUser.remove( {_id:id}, function (err) {
if(err) callback(err);
else callback(null, {"status":"OK"});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment