2017-01-05 5 views
1

Also ich bin neu in JavaScript und ich versuche, eine Webanwendung in Node.js zu erstellen. Ich möchte die Benutzerauthentifizierung mit pass.js in meine App aufnehmen. Aber wenn ich versuche, den Server auf der Eingabeaufforderung zu starten, halte ich erhalten diesen Fehler:TypeError: uri.indexOf ist keine Funktion

TypeError: uri.indexOf is not a function 
at checkReplicaSetInUri (C:\spectray\node_modules\mongoose\lib\index.js:115:30) 
at Mongoose.connect (C:\spectray\node_modules\mongoose\lib\index.js:238:40) 
at Object.<anonymous> (C:\spectray\server.js:15:10) 
at Module._compile (module.js:570:32) 
at Object.Module._extensions..js (module.js:579:10) 
at Module.load (module.js:487:32) 
at tryModuleLoad (module.js:446:12) 
at Function.Module._load (module.js:438:3) 
at Module.runMain (module.js:604:10) 
at run (bootstrap_node.js:394:7) 
at startup (bootstrap_node.js:149:9) 
at bootstrap_node.js:509:3 

Hier ist meine server.js Datei:

var express = require('express'); 
var app = express(); 
var port = process.env.PORT || 8080; 
var mongoose = require('mongoose'); 
var passport = require('passport'); 
var morgan = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var session = require('express-session'); 
var flash = require('connect-flash'); 
var db = require('./config/database.js'); 

var configDB = require('./config/database.js'); 

mongoose.connect(db); 

app.use(morgan('dev')); 
app.use(cookieParser()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

app.set('view engine', 'ejs'); 

app.use(session({ secret: 'penniesfromheaven', resave: true, saveUninitialized: true })); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 

require('./app/routes.js')(app, passport); 

app.listen(port); 
console.log('The magic happens on port ' + port); 

Was bin ich dong falsch?

+0

Was ist in './Config/database.js'? – cartant

+0

Was enthält Ihre ** database.js **? –

+0

Meine Datenbank ist leer. –

Antwort

1

Sie können einen URL-Wert auf Ihre database.js hinzufügen

//database.js 
module.exports = 
{ 
    url: "mongodb://localhost:27017/sampleDB" 
} 

Diese in Ihrem app.js sein sollte

var db = require('../config/database.js'); 

mongoose.connect(db.url) 
+0

Diesen Code zu meiner Datenbank hinzugefügt. Jetzt sagt mir meine Eingabeaufforderung, dass Mungo nicht definiert ist. –

+0

Ich aktualisierte die Antwort, die letzten zwei Codezeilen sollten in app.js sein –

+0

Ihre Datenbank.js enthält einen URL-Wert, der über module.exports verfügbar gemacht wird. Sie müssen diesen Wert in app.js –

2

Sie können einfach schreiben folgende

var mongoose = require('mongoose'); 
    mongoose.connect('mongodb://localhost:27017/sampledatabase'); 

One Noch etwas, was Sie hier tun können, ist, dass Sie eine Datei "datenbank.js" erstellen und von dort eine Verbindung zurückgeben können, wo dies erforderlich sein kann