top nodejs node node.js mongoose node-mongodb-native

node.js - top - nodejs mongodb module



¿Por qué recibo el error "Intentando abrir una conexión no cerrada"? (5)

En mi opinión, estás tratando de crear otra conexión sin cerrar la actual. Por lo tanto, es posible que desee utilizar:

createConnection() lugar de connect() .

En tu caso, se vería así:

db = mongoose.createConnection(''mongodb://localhost/mydb'');

Estoy intentando conectar mi aplicación nodo a mongodb vía mangosta. Parece que está funcionando, ya que puedo agregar documentos, pero obtengo el error { [Error: Trying to open unclosed connection.] state: 2 } .

Creé una aplicación muy simple, solo para asegurarme de que todo funciona correctamente antes de conectar mi aplicación real.

Aquí está mi aplicación simple:

var mongoose = require(''mongoose''); var Schema = mongoose.Schema; var timeSchema = new Schema({ timestamp: String }); var Time = mongoose.model(''Time'', timeSchema); mongoose.connect(''mongodb://localhost/mydb''); var db = mongoose.connection; db.on(''error'', console.error.bind(console, ''connection error: '')); db.once(''open'', function () { var testA = new Test({ timestamp: Date() }); });

También intenté agregar db.close() hasta el final, pero no hizo ninguna diferencia.

Esto se ejecuta en un VPS Ubuntu 14.04 con:

  • Node.js v0.10.3
  • MongoDB 2.6.3
  • Mangosta 1.4.21

Tuve el mismo problema y descubrí que tenía la siguiente conexión en otro archivo, que era la razón por la que no me podía conectar con un nombre de base de datos diferente. El siguiente createConnection es necesario:

db = mongoose.createConnection(''mongodb://localhost/mydb'');

Lo que tenía en otro archivo:

db = mongoose.Connection(''mongodb://localhost/mydb'');


Tuve el mismo problema, pero fue debido a un error tipográfico:

express-sessions lugar de express-session


no debería su

db.once(''open'', function () { var testA = new Test({ timestamp: Date() }); });

ser

db.once(''open'', function () { var testA = new Time({ timestamp: Date() }); });

Si "Prueba" es un esquema diferente basado en una conexión diferente, eso podría afectar, creo


solo use mongoose.connect(''...''); una vez

tal vez en su archivo raíz app.js o index.js , no en todos los archivos relacionados con modelos o bases de datos si los está importando (incluso).

De todos modos, si aún tienes dudas puedes consultarlo por:

var mongoose = require(''mongoose''); var db = mongoose.connection; db.once(''connected'', function() { console.log(''mongoDB is connected''); });