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, каждый с разными настройками чтения/записи