2016-07-19 187 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上吗? –