2013-03-22 17 views
6

Sono un principiante in node.js express.js. (iniziato questa mattina :-)) Ho incluso db.js che ha i miei dettagli di connessione a mongolab e User.js che è il mio modello. Si prega di trovare il codice qui sotto."errore" non rilevato, non specificato durante l'esecuzione dell'app nodo

Db.js

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

module.exports.mongoose = mongoose; 
module.exports.Schema = Schema; 

// Connect to cloud database 
var username = "Ausername" 
var password = "Apassword"; 
var address = 'Aaddress'; 
connect(); 

// Connect to mongo 
function connect() { 
    var url = 'mongodb://' + username + ':' + password + address; 
    mongoose.connect(url); 
} 
function disconnect() {mongoose.disconnect()} 

user.js

var db = require('../lib/db'); 

var UserSchema = new db.Schema({ 
    username : {type: String, unique: true} 
    , password : String 
}) 

var MyUser = db.mongoose.model('User', UserSchema); 

// Exports 
module.exports.addUser = addUser; 

// Add user to database 
function addUser(username, password, callback) { 
    var instance = new MyUser(); 
    instance.username = username; 
    instance.password = password; 
    instance.save(function (err) { 
    if (err) { 
     callback(err); 
    } 
    else { 
     callback(null, instance); 
    } 
    }); 
} 

E quando ho eseguito il nodo app, segnala l'errore sotto

C:\Sripaul\Softwares\NodeJS\Projects\authentication>node app 
Express server listening on port 3000 

C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\utils.js:413 
     throw err; 
     ^
Error: Uncaught, unspecified 'error' event. 
    at NativeConnection.EventEmitter.emit (events.js:68:15) 
    at Model.init (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\model.js:554:31) 
    at exports.tick (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\utils.js:408:16) 
    at Db.ensureIndex (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1066:28) 
    at Db.indexInformation (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1200:28) 
    at Cursor.toArray (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:124:30) 
    at Cursor.each (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:166:32) 
    at Cursor.nextObject.self.queryRun (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:441:39) 
    at Cursor.close (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:687:5) 
    at Cursor.nextObject.commandHandler (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:441:21) 

Codice in in app.js è come sotto

app.post('/signup', function(req, res) { 
    var username = req.body.username; 
    var password = req.body.password; 
    User.addUser(username, password, function(err, user) { 
    if (err) throw err; 
    res.redirect('/form'); 
    }); 
}); 

Qualcuno può aiutarmi a risolverlo?

+0

Alcuni codice manca, che cosa fa il callback si dà alla funzione addUser assomiglia? Inoltre, forse non dovresti mettere il tuo nome utente e password qui. –

+0

Ciao Ho corretto il tuo nome utente/password e indirizzo - non è una buona idea pubblicare questo tipo di cose a meno che tu non voglia che qualcuno acceda al tuo mongo cloud db ??? –

+0

Grazie ricco. Volevo rimuovere il nome utente e pwd dopo averlo modificato ma ho dimenticato :-( – Sripaul

risposta

2

Sembra che in mongo lab questo problema si sia verificato in quanto non è possibile connettersi al cloud Amazon. Ho provato con Joyent Cloud e ha funzionato bene.

2

affrontato il problema simile il messaggio di errore era lo stesso tuttavia Analisi dello stack era diverso,

/%/node_modules/mongoose/lib/utils.js:413 
     throw err; 
      ^
TypeError: Uncaught, unspecified "error" event. 
    at TypeError (<anonymous>) 
    at NativeConnection.EventEmitter.emit (events.js:74:15) 
    at /%/authentication/node_modules/mongoose/lib/model.js:554:31 
    at /%/authentication/node_modules/mongoose/lib/utils.js:408:16 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1066:28 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1200:28 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:124:30 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:166:32 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:441:39 

fisso è essere rimuovendo lo spazio extra (come nel libro) prima della variabile indirizzo db.js.

var address = ' @dbh42.mongolab.com:27427/nockmarket'; 

dovrebbe essere (mente lo spazio)

var address = '@dbh42.mongolab.com:27427/nockmarket'; 
0

Ho anche avuto questo problema in un primo momento con mongolab. Anche se hai un utente mongolab, devi anche creare un utente del database sotto la scheda utenti

-1

Ok, penso che sia più un problema di rilascio più recente, secondo il sito web, l'ultima versione è la versione 3. Suppongo ora tutti i piani GRATUITI sono supportati su questa versione e le vecchie versioni non sono più supportate.

Per risolvere questo problema, installare un nuovo driver: nella directory di lavoro autenticato, eseguire il comando:

$ npm install mongoose 

Dopo aver riavviato l'app con $ node app tutto dovrebbe andare bene.

1

So che questo è un argomento vecchio, ma ho risolto questo problema così:

in package.json: piuttosto che "mangusta": "2.6.5" rendono "mangusta": " *"

poi nella console (cd/home/nomeutente/autenticazione)

tipo "NPM uninstall mangusta" poi tipo "NPM installare mangusta"

Sembra mango 2.6.5 è deprecato versione per mongolab

per ulteriori informazioni: http://digiscape.co.uk/blog/tips/node/unspecified-error-event-not-authorized-for-query-on-db-system-indexes-at-model-js55431/

Problemi correlati