2012-04-14 10 views
23
var mongo = require('mongoose'); 
var connection = mongo.createConnection('mongodb://127.0.0.1/test'); 

connection.on("error", function(errorObject){ 
    console.log(errorObject); 
    console.log('ONERROR'); 
}); 

var Schema = mongo.Schema; 
var BookSchema = new Schema({ title : {type : String, index : {unique : true}}}); 
var BookModel = mongo.model('abook', BookSchema); 
var b = new BookModel({title : 'aaaaaa'}); 

b.save(function(e){ 
    if(e){ 
    console.log('error') 
    }else{ 
    console.log('no error') 
}}); 

Ni el 'error' ni el 'error' se imprimen en el terminal. Además, la conexión. En 'error' no parece disparar tampoco. Confirmé que MongoDb se está ejecutando.Mongoose.js instance.save() devolución de llamada que no se activa

Respuesta

60

este es un caso en el que está agregando el modelo al objeto mangosta global pero abriendo una conexión diferente mongo.createConnection() que los modelos no son parte de. Como el modelo no tiene conexión, no puede guardarse en el db.

esto se resuelve ya sea mediante la conexión a mongo en la conexión mangosta mundial:

var connection = mongo.createConnection('mongodb://127.0.0.1/test'); 
// becomes 
var connection = mongo.connect('mongodb://127.0.0.1/test'); 

o añadiendo sus modelos para su conexión independiente:

var BookModel = mongo.model('abook', BookSchema); 
// becomes 
var BookModel = connection.model('abook', BookSchema); 
+0

Gracias @aaronheckmann! – LDK

+2

Gracias, envió una corrección al tutorial de mongoosejs.com. –

+0

@aaronheckmann, al cambiar 'mongo.model' por' connection.model' Obtengo 'TypeError: tipo indefinido en 'paths.login' ¿Intentó anidar esquemas? Solo puedes anidar usando refs o arrays. –

0

La respuesta publicado esto no resuelve el problema . Desafortunadamente, no puedo simplemente actualizar mi base de datos, por lo que tampoco es una solución para mí. Pero aquí he encontrado una solución a este problema: https://github.com/Automattic/mongoose/issues/4064

sólo tiene que utilizar en lugar de .$__save.save como se muestra:

var b = new BookModel({title : 'aaaaaa'}); 

b.$__save({}, function(e){ 
    if(e){ 
    console.log('error') 
    // callback will show if e exists 
    }else{ 
    console.log('no error') 
    // callback will show 'no error' 
}}); 
Cuestiones relacionadas