Mangosta.instancia js.save() callback no se dispara


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', o 'no error' se imprimen en el terminal. Lo que es más la conexión.en 'error' tampoco parece disparar. He confirmado que MongoDB está corriendo.

Author: LDK, 2012-04-14

2 answers

Este es un caso en el que está agregando el modelo al objeto mangosta global pero abriendo una conexión separada mongo.createConnection() de la que los modelos no forman parte. Dado que el modelo no tiene conexión, no se puede guardar en la base de datos.

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

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);
 62
Author: aaronheckmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-18 00:13:44

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 en 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'
}});
 0
Author: ttemple,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 23:56:49