2016-07-19 186 views
-2

我目前正在與一個簡單的項目與MEAN堆棧。我正在嘗試連接到Mongo DB。在我嘗試將數據放到我的index.ejs文件中之前,所有內容似乎都能正常工作。這裏是我的代碼:500與MEAN堆棧錯誤

型號:

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 

最後,我知道該數據庫正在蒙戈側-I在那裏有一個條目,可以看到它。請讓我知道是否需要更多信息。感謝您的幫助。

+0

什麼是錯誤追溯?必須有一個... – aschmid00

+0

我沒有得到一個錯誤,除了GET/500 5.070毫秒 - 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'。html看起來如何IKE?它可能只是一個CSS或HTML問題,它沒有直觀地顯示。人員列表是否有任何文件? – aschmid00

+0

是的,HTML看起來像你上面。人員文檔中只有一個對象。 dbs被稱爲learn2A,但該集合被稱爲person。如果不是人員,這有什麼關係嗎?但是,當我輸入db.person.find()時,我顯示的一個對象是有一個ID,姓名,姓氏等等。你想讓我的代碼放在Github上嗎? –