diff --git a/controllers/articles.js b/controllers/articles.js index a4f0b2d..ab8ca89 100644 --- a/controllers/articles.js +++ b/controllers/articles.js @@ -1,6 +1,7 @@ var express = require('express'); var router = express.Router(); var Article = require('../models/articles.js'); +var Author = require('../models/authors.js') router.get('/', function(req, res){ Article.find({}, function(err, foundArticles){ @@ -35,16 +36,24 @@ router.delete('/:id', function(req, res){ }); router.get('/:id/edit', function(req, res){ - Article.findById(req.params.id, function(err, foundArticle){ - res.render('articles/edit.ejs', { - article: foundArticle + Author.find({}, function(err, allAuthors){ + Article.findById(req.params.id, function(err, foundArticle){ + res.render('articles/edit.ejs', { + article: foundArticle, + authors: allAuthors + }); }); }); }); router.put('/:id', function(req, res){ - Article.findByIdAndUpdate(req.params.id, req.body, function(){ - res.redirect('/articles'); + Author.findById(req.body.authorId, function(err, foundAuthor){ + Article.findByIdAndUpdate(req.params.id, req.body, {new:true}, function(err, updatedArticle){ + foundAuthor.articles.push(updatedArticle); + foundAuthor.save(function(){ + res.redirect('/articles'); + }); + }); }); }); diff --git a/models/authors.js b/models/authors.js index 673ff6b..2d3cd75 100644 --- a/models/authors.js +++ b/models/authors.js @@ -1,7 +1,9 @@ var mongoose = require('mongoose'); +var Article = require('./articles.js'); var authorSchema = mongoose.Schema({ - name: String + name: String, + articles: [Article.schema] }); var author = mongoose.model('Author', authorSchema); diff --git a/views/articles/edit.ejs b/views/articles/edit.ejs index 6fea2bb..318eb6b 100644 --- a/views/articles/edit.ejs +++ b/views/articles/edit.ejs @@ -25,6 +25,12 @@
+ Choose and author: +