質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

2回答

1979閲覧

ExpressでMongoDBにアクセスできない

退会済みユーザー

退会済みユーザー

総合スコア0

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2017/11/21 06:53

Javascript

1var express = require('express'), 2 app = express(); 3 4var post = require('./routes/post.js'), 5 logger = require('morgan'), 6 methodOverride = require('method-override'), 7 bodyParser = require('body-parser'); 8 9//mongodbモジュール 10var mongoose = require('mongoose'); 11var Posts = require(__dirname+'/mongodb/mongo.js'); 12 13//csrfモジュール 14var cookieParser = require('cookie-parser'); 15var expressSession = require('express-session'); 16var csrf = require('csurf'); 17 18app.set('views',__dirname + '/views'); 19app.set('view engine','ejs'); 20 21//middlewere 上から順番に処理を行っていく。 22app.use(methodOverride('_method')); 23app.use(bodyParser.json()); 24app.use(bodyParser.urlencoded({extended: true})); 25app.use(logger('dev')); 26 27//csrf対策 28app.use(cookieParser()); 29app.use(expressSession({secret: 'secret_key'})); 30app.use(csrf()); 31app.use(function(req,res,next){ 32 res.locals.csrftoken = req.csrfToken(); 33 next(); 34}); 35 36// routing 37 38app.get('/', post.index); 39app.get('/posts/:id([0-9]+)', post.show); 40app.get('/posts/new', post.new); 41app.post('/posts/create', post.create); 42app.get('/posts/:id/edit', post.edit); 43app.put('/posts/:id', post.update); 44app.delete('/posts/:id', post.destroy); 45/* 46 47 48 49 50 51 52*/ 53 54app.listen(8000); 55console.log('server starting...'); 56

Javasctipt

1var mongoose = require('mongoose'); 2var Schema = mongoose.Schema; 3var Posts = new Schema({ 4 title:{type:String}, 5 body:{type:String} 6}); 7 8module.exports = mongoose.model('posts',Posts); 9

Javascript

1 2var mongoose = require('mongoose'); 3 4 5var posts = [ 6 {title: 'title0', body: 'body0'}, 7 {title: 'title1', body: 'body1'}, 8 {title: 'title2', body: 'body2'} 9]; 10 11mongoose.connect('mongodb://localhost/posts'); 12 13exports.index = function(req,res){ 14 res.render('posts/index.ejs',{posts:posts}); 15}; 16 17exports.show = function(req,res){ 18 res.render('posts/show.ejs',{post: posts[req.params.id]}); 19} 20 21exports.new = function(req,res){ 22 res.render('posts/new.ejs'); 23} 24 25exports.create = function(req,res){ 26 var Posts = require(__dirname+'/mongodb/mongo.js'); 27 var posts = new Posts(); 28 29 posts.title = req.body.title; 30 posts.body = req.body.body; 31 32 posts.save(function(err){ 33 if(err){ 34 console.log('missed db saving'); 35 }; 36 }); 37 38 var post = { 39 title:req.body.title, 40 body:req.body.body 41 }; 42 posts.push(post); 43 res.redirect('/'); 44} 45 46exports.edit = function(req,res){ 47res.render('posts/edit.ejs',{post:posts[req.params.id], id:req.params.id}); 48}; 49 50exports.update = function(req, res) { 51 posts[req.body.id] = { 52 title: req.body.title, 53 body: req.body.body 54 }; 55 res.redirect('/'); 56}; 57 58exports.destroy = function(req,res){ 59 posts.splice([req.body.id],1); 60 res.redirect('/'); 61};

勉強のため、dotinstallなどでExpressとMongoDBの勉強をしているのですが、
mongooseを使用してMongoDBにアクセスする方法がわからず、止まっています。
上記コードでエラーなどは出ないのですが、Mongoでshow dbsをしてもpostsデータベースが作られません。もしよろしければご教授いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

saveする直前のpostsのtitleとbodyに値は渡せているでしょうか?もし渡せていない場合posts.saveをしてもデータベースに保存されないかもと思いました。

それでもダメでしたら一度コンソールからデータを突っ込んで、プログラムから取得できるか別の方法でデータベースにアクセスできるか確認した方がいいですね。

投稿2017/11/23 01:44

TomokazuKozuma

総合スコア131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/23 07:50

ありがとうございます。結局mongooseを使用せずに進めたところ無事解決しました。
guest

0

ベストアンサー

まずは保存処理の成功時にコンソールが出るようにしてはどうでしょうか?

javascript

1 posts.save(function(err){ 2 if(err){ 3 console.log('missed db saving'); 4 } else { 5 console.log('saved'); 6 } 7 });

savedが出力されるようならmongoの何処かには保存されているとは思いますが…

投稿2017/11/21 13:21

sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/23 07:51

ありがとうございます。 consoleで確認したところ、savedは確認できましたが、値がnullとなっておりました。 結局mongooseを使用せずに進めたところ無事解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問