2013-03-22 32 views
6

Jestem początkujący w pliku node.js express.js. (rozpoczęło się dziś rano :-)) Dołączyłem db.js, który ma moje szczegóły połączenia z mongolabem i User.js, który jest moim modelem. Proszę znaleźć kod poniżej.Nieokreślony, nieokreślony "błąd" podczas uruchamiania aplikacji węzła

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

i kiedy uruchomić aplikację węzła, zgłasza się poniżej błąd

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) 

kod w jest w app.js poniżej poniżej:

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

Czy ktoś może mi pomóc rozwiązać ten problem?

+0

Niektóre kod brakuje, co powoduje wywołanie zwrotne dać do AddUser funkcji wygląda? Być może nie powinieneś tu umieszczać swojej nazwy użytkownika i hasła. –

+0

Witam Zredagowałem nazwę użytkownika/hasło i adres - nie jest to świetny pomysł, aby opublikować tego rodzaju rzeczy, chyba że chcesz, aby ktoś uzyskał dostęp do bazy danych Mongo Cloud? –

+0

Dzięki Rich. Chciałem usunąć nazwę użytkownika i pwd po edycji, ale zapomniałem :-( – Sripaul

Odpowiedz

2

Wygląda na to, że w laboratorium mongo zdarzył się problem, ponieważ nie można połączyć się z chmurą amazon. Próbowałem z Joyent Cloud i działało dobrze.

2

obliczu podobnego problemu komunikat o błędzie był jednak taki sam ślad stosu był inny,

/%/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 

stałe być usunięcie dodatkowego miejsca (jak w książce) przed zmiennej adresu w db.js.

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

powinny być (przeszkadza przestrzeń)

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

miałem również ten problem w pierwszym użyciem mongolab. Nawet jeśli masz użytkownika mongolab, musisz również utworzyć użytkownika bazy danych w zakładce użytkowników

-1

OK, myślę, że jest to bardziej najnowszy numer wydania, według strony internetowej, najnowsze wydanie to wersja 3. Przypuszczam, że wszystkie darmowe plany są teraz obsługiwane w tej wersji, a stare wersje nie są już obsługiwane.

Aby rozwiązać ten problem, należy zainstalować nowy sterownik: w katalogu roboczym uwierzytelnione, uruchom polecenie:

$ npm install mongoose 

Po ponownym uruchomieniu aplikacji z $ node app wszystko powinno być w porządku.

1

Wiem, że to stary temat, ale rozwiązał ten problem tak:

w package.json: zamiast "Mongoose": "2.6.5" uczynić go "Mangusta": " *”

następnie w konsoli (cd/home/Twoja nazwa użytkownika/authentication)

typu "npm odinstalować mangusta" następnie typu "npm zainstalować mangusta"

Wygląda jak mangusta 2.6.5 jest przestarzała wersja dla mongolab

o więcej informacji: http://digiscape.co.uk/blog/tips/node/unspecified-error-event-not-authorized-for-query-on-db-system-indexes-at-model-js55431/

Powiązane problemy