勉強のため、Node.js(express使用)とMongoDB(mongoose使用)を使って、フォームから打ち込まれた値をMongoDBに保存し、MongoDBから保存されたデータを呼び出したいのですが、データベースからの呼び出す方法がわからず、頭を抱えております。
Javascript
1//app.js 2var express = require('express'), 3 bodyParser = require('body-parser'), 4 methodOverride = require('method-override'), 5 morgan = require('morgan'), 6 app = express(), 7 post = require('./routes/post'); 8 9app.set('views', __dirname + '/views'); 10app.set('view engine', 'ejs'); 11 12// middleware 13app.use(bodyParser()); 14app.use(methodOverride('_method')); 15app.use(morgan()); 16 17// routing 18app.get('/', post.index); 19 20app.get('/posts/:id([0-9]+)', post.show); 21 22app.get('/posts/new', post.new); 23 24app.post('/posts/create', post.create); 25 26
Javascript
1//post.js 2var mongoose = require('mongoose'); 3var Schema = mongoose.Schema; 4var UserSchema = new Schema({ 5 title: String, 6 body:String 7}); 8mongoose.model('User',UserSchema); 9 10mongoose.connect('mongodb://localhost/sample_db'); 11 var User = mongoose.model('User'); 12 var user = new User(); 13 14 15var posts = [];//←ここにmongodbのuserコレクションのデータを配列で渡したい。 16 17exports.index = function(req,res){ 18 res.render('posts/index',{posts:posts}); 19}; 20 21exports.show = function(req,res){ 22 res.render('posts/show',{post:posts[req.params.id]}); 23}; 24 25exports.new = function(req,res){ 26 res.render('posts/new'); 27}; 28 29exports.create = function(req,res){ 30 user.title = ""; 31 user.body = ""; 32 user.title = req.body.title; 33 user.body = req.body.body; 34 35 user.save(function(err) { 36 if (err) { console.log(err); } 37 console.log('conected'); 38}); 39 res.redirect('/'); 40};
Javascript
1//index.ejs 2<% include ../header %> 3<h1>Posts</h1> 4<ul> 5<% for (var i=0; i<posts.length; i++) { %> 6<li> 7 <a href="/posts/<%= i %>"><%= posts[i].title %></a> 8 <!--<a href="/posts/<%= i %>/edit">[Edit]</a>--> 9 <form method="post" action="/posts/<%= i %>?_method=DELETE"> 10 <!--<input type="submit" value="del">--> 11 <!--<input type="hidden" name="_method" value="delete">--> 12 <input type="hidden" name="id" value="<%= i %>"> 13 <input type="hidden" name="_csrf" value="<%= csrftoken%>"> 14 </form> 15</li> 16<% } %> 17</ul> 18<p><a href="/posts/new">Add new</a></p> 19<% include ../footer %>
Javascript
1//show.ejs 2<% include ../header %> 3<h1><%= post.title %></h1> 4<p><%= post.body %></p> 5<p><a href="/">Go Back</a></p> 6<% include ../footer %>
Javascript
1//new.ejs 2<% include ../header %> 3<h1>Add new</h1> 4<form method="post" action="/posts/create"> 5<input type="text" name="title"> 6<input type="text" name="body"> 7<input type="submit" value="add!"> 8<input type="hidden" name="_csrf" value="<%= csrftoken%>"> 9</form> 10 11<p><a href="/">Go Back</a></p> 12<% include ../footer %>
dotinstallのレッスン動画で作成したもので学習しています。
データベースへのアクセス、保存はできてはいるのですが、正しいのかどうかの判断が現状ついておりません。
post.jsのpostsにデータベースのデータを配列で渡す方法と、データベースへの保存方法の評価をいただければ助かります。
ここまで読んでいただいたかたありがとうございました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/23 07:48
2017/11/23 07:58
退会済みユーザー
2017/11/23 08:03