Last active
October 5, 2018 10:02
-
-
Save azisuazusa/b4a4180c6f96ebcd730bfc5d28ea917c to your computer and use it in GitHub Desktop.
todo-app-rest-men
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import mongoose from 'mongoose' | |
import todo from './model' | |
export const getTodos = (request, response) => { | |
todo.find().exec((error, todos) => { | |
if (error) { | |
return response.json({ | |
'success': false, | |
'message': 'Gagal mengambil todos!', | |
error | |
}) | |
} | |
return response.json({ | |
'success': true, | |
'message': 'Berhasil mengambil todos!', | |
todos | |
}) | |
}) | |
} | |
export const addTodo = (request, response) => { | |
const newTodo = new todo(request.body) | |
newTodo.save((error, todo) => { | |
if (error) { | |
return response.json({ | |
'success': false, | |
'message': 'Gagal menambah todo!', | |
error | |
}) | |
} | |
return response.json({ | |
'success': true, | |
'message': 'Berhasil menambah todo!', | |
todo | |
}) | |
}) | |
} | |
export const updateTodo = (request, response) => { | |
todo.findOneAndUpdate({ _id: request.params.id }, request.body, { new: true }, (error, todo) => { | |
if (error) { | |
return response.json({ | |
'success': false, | |
'message': 'Gagal mengupdate todo!', | |
error | |
}) | |
} | |
return response.json({ | |
'success': true, | |
'message': 'Berhasil mengupdate todo!', | |
todo | |
}) | |
}) | |
} | |
export const getTodo = (request, response) => { | |
todo.find({ _id: request.params.id }).exec((error, todo) => { | |
if (error) { | |
return response.json({ | |
'success': false, | |
'message': 'Gagal mengambil todo!', | |
error | |
}) | |
} | |
return response.json({ | |
'success': true, | |
'message': 'Berhasil mengambil todo!', | |
todo | |
}) | |
}) | |
} | |
export const deleteTodo = (request, response) => { | |
todo.findByIdAndRemove({ _id: request.params.id }).exec((error, todo) => { | |
if (error) { | |
return response.json({ | |
'success': false, | |
'message': 'Terjadi error!', | |
error | |
}) | |
} | |
if (todo.length > 0) { | |
return response.json({ | |
'success': true, | |
'message': 'Berhasil mendapatkan todo dengen Id ${request.body.id}', | |
todo | |
}) | |
} else { | |
return response.json({ | |
'success': true, | |
'message': 'Tidak ada todo dengan Id ${request.body.id}', | |
}) | |
} | |
}) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// import library | |
import express from 'express' | |
import path from 'path' | |
import bodyParser from 'body-parser' | |
import mongoose from 'mongoose' | |
// import route | |
import route from './route' | |
const app = express() | |
/* | |
* Izinkan CORS | |
* apa itu CORS? | |
* https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS | |
*/ | |
app.use((request, response, next) => { | |
response.header('Access-Control-Allow-Origin', '*') | |
response.header('Access-Control-Allow-Header', 'Origin, X-Requested-With, Content-Type, Accept') | |
next(); | |
}) | |
// set bodyParser sebagai middleware yang akan memparsing body request | |
app.use(bodyParser.json()) | |
app.use(bodyParser.urlencoded({ extended: true })) | |
// connect ke database | |
mongoose.Promise = global.Promise | |
mongoose.connect('mongodb://localhost/todo-app-mern-stack', { | |
useNewUrlParser: true | |
}) | |
// set route | |
app.use('/api', route) | |
app.get('/', (request, response) => { | |
return response.end('API Working') | |
}) | |
// jika route tidak ditemukan | |
app.use((request, response, next) => { | |
response.status(404).send('<h2 align=center>Page not found!</h2>') | |
}) | |
// start server | |
const port = 3000 | |
app.listen(port, () => { | |
console.log(`App Server Listening at ${port}`) | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import mongoose from 'mongoose' | |
var Schema = mongoose.Schema({ | |
createdAt: { | |
type: Date, | |
default: Date.now() | |
}, | |
fullName: String, | |
todoText: String | |
}) | |
export default mongoose.model('Todo', Schema) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "todo-app-men-stack", | |
"version": "1.0.0", | |
"description": "a todo app with men stack for learning purpose", | |
"main": "index.js", | |
"scripts": { | |
"babel-node": "babel-node", | |
"start": "nodemon --exec npm run babel-node index.js" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import express from 'express' | |
import * as controller from './controller' | |
const route = express.Router() | |
route.route('/') | |
.get(controller.getTodos) | |
.post(controller.addTodo) | |
route.route('/:id') | |
.get(controller.getTodo) | |
.put(controller.updateTodo) | |
.delete(controller.deleteTodo) | |
export default route |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment