MEAN Stack出现500错误

时间:2016-07-19 20:16:14

标签: node.js mongodb express mean-stack ejs

我目前正在研究一个带有MEAN堆栈的简单项目。我正在尝试连接到Mongo DB。在我尝试将数据放入index.ejs文件之前,一切似乎都正常。这是我的代码:

型号:

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 ms - 35

如果我带走以下所有内容:

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

然后我的index.ejs页面加载正常。

我的文件夹结构如下所示:

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

最后,我知道db正在mongo端工作 - 我有一个条目可以看到它。如果需要更多信息,请告诉我。感谢您的帮助。

2 个答案:

答案 0 :(得分: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>
<% }) %>

答案 1 :(得分:0)

我找到了自己问题的答案。解决方案是我将连接放在我的文件中的mongo db中,用于当前模型。它在app.js.所以这一行:

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

从app.js移到了模特文件夹,连接完成,一切正常。