2016-07-19 6 views
-2

MEANスタックを使用した単純なプロジェクトを現在作業中です。私はMongo DBに接続しようとしています。私がindex.ejsファイルにデータを配置しようとするまで、すべてが正常に機能しているようです。ここに私のコードは次のとおりです。MEANスタックで500エラー

モデル:ルートフォルダ内の

var mongoose = require('mongoose'); 

//mongoose Schema 

var personSchema = new mongoose.Schema({ 
    firstname: {type: String, required: true}, 
    lastname: {type: String, required: true}, 
    homeworld: String 
}); 

//compiling into model 
module.exports = mongoose.model("Person", personSchema); 

Index.js:

var express = require('express'); 
var router = express.Router(); 
var Person = require("../models/person"); 

router.get('/', function(req, res, next) { 
    Person.find({}, function(err, persons) { 
    if(err){ 
     console.log("ERROR!"); 
    } else { 
    res.render('index', { persons: persons }); 
    } 
}) 
}); 

app.jsファイルは、(これは、一部のみ上半分のみであることに注意してください私は)少し変わっていること:ここで

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
require('./app_server/models/db'); 
var routes = require('./app_server/routes/index'); 
var users = require('./app_server/routes/users'); 
var Person = require("./app_server/models/person"); 
var mongoose = require('mongoose'); 

var app = express(); 

//Connecting to mongo DB 
mongoose.connect("mongodb://localhost/learn2A"); 

// view engine setup 
app.set('views', path.join(__dirname, 'app_server', 'views')); 
app.set('view engine', 'ejs'); 

は私index.ejsページです:

<h1>Home Page</h1> 

<h4>Database Items Here:</h4> 
<!-- Looping through each entry in the database --> 
<% persons.forEach(function(person) { %> 
    <p><%= person.firstname %></p> 
    <p><%= person.lastname %></p> 
<% }) %> 

私はindex.ejsページに行くまで、すべて正常に動作しています。それから私は、エラーを得ることはありませんが、私のコンソール上で私が示しています:

GET/500 23.966ミリ秒 - 35

を私は次の行のすべて奪う場合:私のインデックス次に

<% persons.foreach(function(person) { %> 
    <p><%= person.firstname %></p> 
    <p><%= person.lastname %></p> 
<% }) %> 

.ejsページが正常に読み込まれます。

マイフォルダ構造は次のようなものになります。

app_server 
    models 
     person.js 
    routes 
     index.js 
    views 
     error.ejs 
     index.ejs 
app.js 

を最後に、私はそこに一つのエントリを持っており、それを見ることができるDBはモンゴ側-Iに取り組んでいることを知っています。より多くの情報が必要な場合はお知らせください。お手伝いありがとう。

+0

エラートレースバックは何ですか? 1つでなければなりません... – aschmid00

+0

GET/500 5.070 ms - 35を除いて私のエラーは表示されません。これは迷惑なことです。私はその小さな情報を取り組んでいます! –

+0

私は、最もシンプルなケースにアプリをスリムしようとします。そこにログを記録してどこまで移動したら、コードのどの部分が失敗するかを知ることができます。 – aschmid00

答えて

0

私は自分の質問への答えを考え出しました。解決策は、現在のモデルのファイルにmongo dbへの接続を置いたことでした。それはapp.jsにあったしたがって、この行:

//Connecting to mongo DB 
mongoose.connect("mongodb://localhost/learn2A"); 

は、モデルフォルダに上app.jsから移動されたとの接続が行われ、すべてが働きました。

1
はそうのようにコードを変更

indes.js

var express = require('express'); 
var router = express.Router(); 
var Person = require("../models/person"); 

router.get('/', function(req, res, next) { 
    Person.find({}, function(err, persons){ 
    if(err){ 
     console.log("ERROR!"); 
    }else { 
    res.render('index', { persons: persons }); 
    } 
}) 
}); 

index.ejs

<h1>Home Page</h1> 

<h4>Database Items Here:</h4> 
<!-- Looping through each entry in the database --> 
<% persons.forEach(function(person){ %> 
    <p><%= person.firstname %></p> 
    <p><%= person.lastname %></p> 
<% }) %> 
+0

を実行しても、コンソールに304エラーメッセージが表示されますが、ページは表示されません。 GET/304 3.043 ms - - –

+0

上記のように '304'は' Not Modified'を意味します。いけ?視覚的に見えないCSSやHTMLの問題かもしれません。人の配列には書類がありますか? – aschmid00

+0

うん、あなたは上記のようにhtmlが見えます。人物文書には1つのオブジェクトがあります。 dbsはlearn2Aと呼ばれますが、コレクションは人と呼ばれます。それが人でないかどうかは重要ですか?しかし、db.person.find()をタイプすると、id、name、last nameなどがあるオブジェクトが1つ表示されています。コードをGithubに置いてもらいたいですか? –