2016-07-19 10 views
-2

Ich arbeite derzeit an einem einfachen Projekt mit dem MEAN-Stack. Ich versuche eine Verbindung zu Mongo DB herzustellen. Alles scheint in Ordnung zu sein, bis ich versuche, Daten in meine index.ejs Datei zu legen. Hier ist mein Code:500 Fehler mit MEAN Stack

Modell:

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 in Routen Ordner:

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 Datei (Bitte beachten Sie, dass dies nur die obere Hälfte ist, der einzige Teil dass ich ein wenig verändert):

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'); 

Hier ist meine index.ejs Seite:

Alles ist gut verbunden und funktioniert, bis ich auf die index.ejs Seite gehe. Dann bekomme ich einen Fehler nicht aber auf meiner Konsole Ich zeige:

GET/500 23,966 ms - 35

Wenn ich wegnehmen alle folgenden Zeilen:

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

dann mein Index .ejs Seite wird geladen.

Meine Ordnerstruktur etwa wie folgt aussieht:

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

Schließlich weiß ich, dass der db auf der Mongo arbeitet neben Ich habe einen Eintrag in dort und sie sehen kann. Bitte lassen Sie mich wissen, wenn mehr Informationen benötigt werden. Danke für die Hilfe.

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

Was ist die Fehlerrückverfolgung? es muss einen geben ... – aschmid00

+0

Ich bekomme keinen Fehler außer GET/500 5.070 ms - 35 in meiner Konsole, das ist die nervige Sache. Ich habe diese kleine Information, an der ich arbeiten kann! –

+0

Ich würde versuchen, die App auf den einfachsten Fall zu verkleinern. Loggen Sie sich dort ein und sehen Sie, wie weit es geht und dann werden Sie herausfinden, welcher Teil des Codes fehlschlägt. – aschmid00

Antwort

0

dachte ich die Antwort auf meine eigene Frage aus:

1

Ihr Code wie so ändern. Die Lösung war, dass ich die Verbindung zum mongo db in meiner Datei für das aktuelle Modell platzierte. Es war in app.js. Also diese Zeile:

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

, wurde von dem app.js über zu den Modellen Ordner und die Verbindung wurde hergestellt und alles funktionierte.

+0

habe das gemacht und bekomme immer noch die 304 Fehlermeldung in meiner Konsole, aber die Seite erscheint-erwarte ohne Die db info Konsole zeigt: GET/304 3.043 ms - - –

+0

wie oben angegeben '304' bedeutet' Not Modified' wie sieht das html aus l Ike? Es könnte nur ein CSS- oder HTML-Problem sein, das nicht visuell angezeigt wird. Hat das Personen-Array irgendwelche Dokumente? – aschmid00

+0

Ja, das HTML sieht so aus, als ob du es oben hast. Das Personendokument enthält ein einziges Objekt. Die dbs heißt learn2A, aber die Sammlung heißt person. Ist es wichtig, dass es keine Personen sind? Aber wenn ich db.person.find() eintippe, zeige ich, dass ein Objekt mit einer ID, einem Namen, einem Nachnamen usw. vorhanden ist. Soll ich meinen Code auf Github setzen? –