diff --git a/README.md b/README.md index 301c768ba..1f1dba2ce 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,9 @@ Node provides the RESTful API. Angular provides the frontend and accesses the AP 1. Clone the repository: `git clone git@github.com:scotch-io/node-todo` 2. Install the application: `npm install` -3. Start the server: `node server.js` -4. View in browser at `http://localhost:8080` +3. Make sure mongodb is accessable at `http://localhost:27017` +4. Start the server: `node server.js` +5. View in browser at `http://localhost:2020` ## Tutorial Series diff --git a/app/models/todo.js b/app/models/todo.js index 082a2ee37..cae388efa 100644 --- a/app/models/todo.js +++ b/app/models/todo.js @@ -1,5 +1,7 @@ var mongoose = require('mongoose'); module.exports = mongoose.model('Todo', { - text : {type : String, default: ''} -}); \ No newline at end of file + text : {type : String, default: ''}, + done : {type : Boolean, default:false}, + +}); diff --git a/app/routes.js b/app/routes.js index 17a201567..fc4396cdd 100644 --- a/app/routes.js +++ b/app/routes.js @@ -1,7 +1,7 @@ var Todo = require('./models/todo'); function getTodos(res){ - Todo.find(function(err, todos) { + Todo.find({done:false},function(err, todos) { // if there is an error retrieving, send the error. nothing after res.send(err) will execute if (err) @@ -11,6 +11,18 @@ function getTodos(res){ }); }; +function getOldTodos(res){ + Todo.find({done:true},function(err, todos) { + + // if there is an error retrieving, send the error. nothing after res.send(err) will execute + if (err) + res.send(err) + + res.json(todos); // return all todos in JSON format + }); +} + + module.exports = function(app) { // api --------------------------------------------------------------------- @@ -27,7 +39,8 @@ module.exports = function(app) { // create a todo, information comes from AJAX request from Angular Todo.create({ text : req.body.text, - done : false + done : false, + //timeCompleted: null }, function(err, todo) { if (err) res.send(err); @@ -38,20 +51,34 @@ module.exports = function(app) { }); - // delete a todo + + // Check off todo app.delete('/api/todos/:todo_id', function(req, res) { - Todo.remove({ - _id : req.params.todo_id - }, function(err, todo) { - if (err) - res.send(err); - getTodos(res); - }); + Todo.findById(req.params.todo_id, function (err, todo) { + if (err) + res.send(err); + todo.done = true; + //todo.timeCompleted = Date.now(); + todo.save(function (err) { + if (err) + res.send(err); + getTodos(res); + }); + }); + }); + + + app.get('/api/completed', function(req, res) { + //res.sendfile('./public/old.html'); + getOldTodos(res); + }); + // application ------------------------------------------------------------- app.get('*', function(req, res) { - res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end) + res.sendfile('./public/index.html'); // load the view file (angular will handle the page changes on the front-end) }); -}; \ No newline at end of file + +}; diff --git a/config/database.js b/config/database.js index cd3586632..e4788fe5c 100644 --- a/config/database.js +++ b/config/database.js @@ -1,5 +1,5 @@ module.exports = { // the database url to connect - url : 'mongodb://node:nodeuser@mongo.onmodulus.net:27017/uwO3mypu' + url : 'mongodb://localhost:27017' } diff --git a/public/js/controllers/main.js b/public/js/controllers/main.js index 7cb2ce277..2d6ecf657 100644 --- a/public/js/controllers/main.js +++ b/public/js/controllers/main.js @@ -14,6 +14,7 @@ angular.module('todoController', []) $scope.loading = false; }); + // CREATE ================================================================== // when submitting the add form, send the text to the node API $scope.createTodo = function() { @@ -47,4 +48,4 @@ angular.module('todoController', []) $scope.todos = data; // assign our new list of todos }); }; - }]); \ No newline at end of file + }]); diff --git a/public/js/services/todos.js b/public/js/services/todos.js index 49761e727..bd34e264d 100644 --- a/public/js/services/todos.js +++ b/public/js/services/todos.js @@ -13,5 +13,6 @@ angular.module('todoService', []) delete : function(id) { return $http.delete('/api/todos/' + id); } + } - }]); \ No newline at end of file + }]); diff --git a/server.js b/server.js index 2bb0a9bc1..9f969c853 100644 --- a/server.js +++ b/server.js @@ -2,7 +2,7 @@ var express = require('express'); var app = express(); // create our app w/ express var mongoose = require('mongoose'); // mongoose for mongodb -var port = process.env.PORT || 8080; // set the port +var port = process.env.PORT || 2020; // set the port var database = require('./config/database'); // load the database config var morgan = require('morgan'); var bodyParser = require('body-parser');