2012-10-09 26 views
11

Estoy algo confundido con el uso de modelos en mongoosejsMongoose.model vs vs Connection.model Model.model

Los modelos pueden ser creados usando mangosta en estas formas

Usando Mangosta

var mongoose = require('mongoose'); 
var Actor = mongoose.model('Actor', new Schema({ name: String })); 

uso de la conexión

var mongoose = require('mongoose'); 
var db = mongoose.createConnection(..); 
db.model('Venue', new Schema(..)); 
var Ticket = db.model('Ticket', new Schema(..)); 
var Venue = db.model('Venue'); 

Usando instancia de modelo existente

var doc = new Tank; 
doc.model('User').findById(id, callback); 

Ahora ¿cuál es la diferencia entre un modelo devuelto por Mongoose.model, Connection.model y Model.model. y cuándo usar what, ¿cuál es la forma recomendada de crear/recuperar modelo?

Respuesta

13
  1. mongoose.model lazos del modelo definido para la conexión predeterminada que se crea llamando mongoose.connect.
  2. db.model vincula el modelo a la conexión que se creó al llamar al var db = mongoose.createConnection.
  3. doc.model busca otro modelo por nombre usando la conexión a la que está vinculado el modelo doc.

Los tres se pueden usar con sensatez en el mismo programa; cuál usar solo depende de la situación.

8

bien aquí es lo I found

Importante! Si abrió una conexión por separado usando mongoose.createConnection() pero intenta acceder al modelo a través de mongoose.model ('ModelName'), no funcionará como se esperaba, ya que es que no está conectado a una conexión de db activa. En este caso, el acceso a través de su modelo la conexión que creó:

var conn = mongoose.createConnection('your connection string'); 
var MyModel = conn.model('ModelName', schema); 
var m = new MyModel; 
m.save() // works 

vs

var conn = mongoose.createConnection('your connection string'); 
var MyModel = mongoose.model('ModelName', schema); 
var m = new MyModel; 
m.save() // does not work b/c the default connection object was never connected 
0

mongoose.connect es para que se conecte a la base de datos misma, a pesar de su base de datos es el equilibrio o replicaSet

db.model es para conexiones múltiples abiertas a Mongo, cada una con diferentes configuraciones de lectura/escritura

Cuestiones relacionadas