push articles onto author

master
Matt Huntington 9 years ago
parent 1438f20727
commit 78b9069072

@ -1,5 +1,6 @@
var express = require('express'); var express = require('express');
var Author = require('../models/authors.js'); var Author = require('../models/authors.js');
var Article = require('../models/articles.js');
var router = express.Router(); var router = express.Router();
router.get('/', function(req, res){ router.get('/', function(req, res){
@ -41,9 +42,23 @@ router.put('/:id', function(req, res){
}); });
router.get('/:id/edit', function(req, res){ router.get('/:id/edit', function(req, res){
Article.find({}, function(err, foundArticles){
Author.findById(req.params.id, function(err, foundAuthor){ Author.findById(req.params.id, function(err, foundAuthor){
res.render('authors/edit.ejs', { res.render('authors/edit.ejs', {
author: foundAuthor author: foundAuthor,
articles: foundArticles
});
});
});
});
router.post('/:id/articles', function(req, res){
Article.findById(req.body.articleId, function(err, foundArticle){
Author.findById(req.params.id, function(err, foundAuthor){
foundAuthor.articles.push(foundArticle);
foundAuthor.save(function(){
res.redirect('/authors/' + req.params.id + '/edit');
})
}); });
}); });
}); });

@ -1,7 +1,9 @@
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var Article = require('./articles.js');
var authorSchema = mongoose.Schema({ var authorSchema = mongoose.Schema({
name: String name: String,
articles: [Article.schema]
}); });
var author = mongoose.model('Author', authorSchema); var author = mongoose.model('Author', authorSchema);

@ -13,17 +13,41 @@
<a href="/">Home</a> <a href="/">Home</a>
</li> </li>
<li> <li>
<a href="/authors">Authors Index</a> <a href="/authors/<%=author._id%>"><%=author.name%>'s Show Page</a>
</li> </li>
</ul> </ul>
</nav> </nav>
</header> </header>
<main> <main>
<section>
<h2>Author Attributes:</h2> <h2>Author Attributes:</h2>
<form action="/authors/<%=author._id%>?_method=PUT" method="post"> <form action="/authors/<%=author._id%>?_method=PUT" method="post">
<input type="text" name="name" value="<%=author.name%>"/><br/> <input type="text" name="name" value="<%=author.name%>"/><br/>
<input type="submit" value="Update Author"/> <input type="submit" value="Update Author"/>
</form> </form>
</section>
<section>
<h2>Articles Written By This Author</h2>
<ul>
<% for(var i = 0; i < author.articles.length; i++) { %>
<li><%=author.articles[i].title%></li>
<% } %>
</ul>
</section>
<section>
<h2>Articles Not Written By This Author</h2>
<ul>
<% for(var i = 0; i < articles.length; i++) { %>
<li>
<%=articles[i].title%>
<form action="/authors/<%=author._id%>/articles" method="post">
<input type="hidden" name="articleId" value="<%=articles[i]._id%>">
<input type="submit" value="Attribute Article To This Author" />
</form>
</li>
<% } %>
</ul>
</section>
</main> </main>
</body> </body>
</html> </html>

@ -25,6 +25,14 @@
<li>Name: <%=author.name%></li> <li>Name: <%=author.name%></li>
</ul> </ul>
</section> </section>
<section>
<h2>Articles Written By This Author</h2>
<ul>
<% for(var i = 0; i < author.articles.length; i++) { %>
<li><%=author.articles[i].title%></li>
<% } %>
</ul>
</section>
<section> <section>
<a href="/authors/<%=author._id%>/edit">Edit</a> <a href="/authors/<%=author._id%>/edit">Edit</a>
</section> </section>

Loading…
Cancel
Save