MEAN Stack 出现 500 错误
500 error with MEAN Stack
我目前正在使用 MEAN 堆栈开发一个简单的项目。我正在尝试连接到 Mongo 数据库。在我尝试将数据放入我的 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 页面之前,一切都连接正常并且工作正常。然后我没有收到错误,但在我的控制台上显示:
获取/500 23.966 毫秒 - 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
最后,我知道数据库在 mongo 端工作 - 我在那里有一个条目并且可以看到它。如果需要更多信息,请告诉我。感谢您的帮助。
像这样更改您的代码:
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>
<% }) %>
我找到了我自己问题的答案。解决方案是我将与 mongo 数据库的连接放置在当前模型的文件中。它在 app.js。所以这一行:
//Connecting to mongo DB
mongoose.connect("mongodb://localhost/learn2A");
已从 app.js 移至模型文件夹,并且已建立连接并且一切正常。
我目前正在使用 MEAN 堆栈开发一个简单的项目。我正在尝试连接到 Mongo 数据库。在我尝试将数据放入我的 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 页面之前,一切都连接正常并且工作正常。然后我没有收到错误,但在我的控制台上显示:
获取/500 23.966 毫秒 - 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
最后,我知道数据库在 mongo 端工作 - 我在那里有一个条目并且可以看到它。如果需要更多信息,请告诉我。感谢您的帮助。
像这样更改您的代码:
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>
<% }) %>
我找到了我自己问题的答案。解决方案是我将与 mongo 数据库的连接放置在当前模型的文件中。它在 app.js。所以这一行:
//Connecting to mongo DB
mongoose.connect("mongodb://localhost/learn2A");
已从 app.js 移至模型文件夹,并且已建立连接并且一切正常。