2013-05-16 14 views
5
exports.c_39 = function(req,res) { 
    var mongoose = require('mongoose'); 
    mongoose.createConnection('mongodb://localhost/cj'); 
    var db = mongoose.connection; 
    db.on('error', console.error.bind(console, 'connection error:')); 
    console.log('a') 
    db.once('open',function(){ 
     console.log('b') 
    }) 
} 

może wykonać console.log ('A '), ale nie może wykonywać DB.once (' open') Funkcja zwrotnaekspresowe Mongoose DB.once ('open') nie może wykonywać funkcję zwrotną

Odpowiedz

9

To dlatego, że mongoose.connection to nie to samo, co połączenie zwracane przez createConnection().

Istnieją dwa sposoby otwierania połączenia z Mangusta:

// method 1: this sets 'mongoose.connection' 
> var client = mongoose.connect('mongodb://localhost/test'); 
> console.log(client.connection === mongoose.connection) 
true 

// method 2: this *doesn't* set 'mongoose.connection' 
> var connection = mongoose.createConnection('mongodb://localhost/test'); 
> console.log(client.connection === mongoose.connection) 
false 

Tak, aby rozwiązać problem, trzeba podłączyć obsługi zdarzeń do połączenia zwracanego przez createConnection(), a nie mongoose.connection:

var db = mongoose.createConnection('mongodb://localhost/cj'); 
db.once('open', function() { ... }); 

W skrócie:

  • .createConnection() Zwraca Connection instancji
  • .connect() zwraca globalnej mongoose instancję
0

Zamiast mongoose.createConnection zastosowanie: mongoose.connect('mongodb://localhost/cj');

Powiązane problemy