Mongoose.model vs Connection.model vs Model.model

Я немного запутался в использовании моделей в mongoosejs

Модели могут быть созданы с помощью мангуста таким образом

Использование Mongoose

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

Использование соединения

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');

Использование существующего экземпляра модели

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

В чем разница между моделью, возвращаемой Mongoose.model, Connection.model и Model.model. и когда использовать что,  Каков рекомендуемый способ создания/выборки модели?

Ответ 1

  • mongoose.model привязывает определенную модель к соединению по умолчанию, которое было создано путем вызова mongoose.connect.
  • db.model связывает модель с соединением, созданным вызовом var db = mongoose.createConnection.
  • doc.model ищет другую модель по имени, используя соединение, к которому привязана модель doc.

Все три могут быть разумно использованы в одной и той же программе; который использовать просто зависит от ситуации.

Ответ 2

ok вот что Я нашел

Внимание! Если вы открыли отдельное соединение, используя mongoose.createConnection(), но попытайтесь получить доступ к модели через mongoose.model('ModelName'), он не будет работать так, как ожидалось, поскольку он не подключен к активному соединению db. В этом случае модель через созданное соединение:

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

против

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

Ответ 3

mongoose.connect для вас подключается к той же базе данных, хотя ваша база данных является балансом или replicaSet

db.model предназначен для нескольких соединений, открытых для Mongo, каждый с разными настройками чтения/записи