Mongoose.js instance.save () callback no disparando

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 ‘ningún error’ se imprimen en la terminal. Además, la conexión. En ‘error’ no parece disparar tampoco. Confirmé que MongoDb se está ejecutando.

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

esto se resuelve conectando a mongo en la conexión de mongoose global:

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

o agregando sus modelos a su conexión separada:

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

La respuesta publicada 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í encontré una solución a este problema: https://github.com/Automattic/mongoose/issues/4064

Simplemente use .$__save lugar de .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' }});