push articles onto author

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

@ -1,5 +1,6 @@
var express = require('express');
var Author = require('../models/authors.js');
var Article = require('../models/articles.js');
var router = express.Router();
router.get('/', function(req, res){
@ -41,9 +42,23 @@ router.put('/:id', function(req, res){
});
router.get('/:id/edit', function(req, res){
Author.findById(req.params.id, function(err, foundAuthor){
res.render('authors/edit.ejs', {
author: foundAuthor
Article.find({}, function(err, foundArticles){
Author.findById(req.params.id, function(err, foundAuthor){
res.render('authors/edit.ejs', {
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 Article = require('./articles.js');
var authorSchema = mongoose.Schema({
name: String
name: String,
articles: [Article.schema]
});
var author = mongoose.model('Author', authorSchema);

@ -13,17 +13,41 @@
<a href="/">Home</a>
</li>
<li>
<a href="/authors">Authors Index</a>
<a href="/authors/<%=author._id%>"><%=author.name%>'s Show Page</a>
</li>
</ul>
</nav>
</header>
<main>
<h2>Author Attributes:</h2>
<form action="/authors/<%=author._id%>?_method=PUT" method="post">
<input type="text" name="name" value="<%=author.name%>"/><br/>
<input type="submit" value="Update Author"/>
</form>
<section>
<h2>Author Attributes:</h2>
<form action="/authors/<%=author._id%>?_method=PUT" method="post">
<input type="text" name="name" value="<%=author.name%>"/><br/>
<input type="submit" value="Update Author"/>
</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>
</body>
</html>

@ -25,6 +25,14 @@
<li>Name: <%=author.name%></li>
</ul>
</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>
<a href="/authors/<%=author._id%>/edit">Edit</a>
</section>

Loading…
Cancel
Save