我目前正在研究一个带有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端工作 - 我有一个条目可以看到它。如果需要更多信息,请告诉我。感谢您的帮助。
答案 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移到了模特文件夹,连接完成,一切正常。