Mongoose.model与Connection.model与Model.model
我对mongoosejs模型的使用有些困惑
模型可以通过这些方式使用mongoose创build
使用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
返回的模型有什么区别。 什么时候使用什么,build议/创build/获取模型的方法是什么?
-
mongoose.model
将定义的模型mongoose.model
到通过调用mongoose.connect
创build的默认连接。 -
db.model
将模型db.model
到通过调用var db = mongoose.createConnection
db.model
创build的连接。 -
doc.model
使用doc
的模型绑定的连接按名称查找另一个模型。
所有这三个都可以用在同一个程序中。 哪一个使用取决于情况。
好的,这是我发现的
重要! 如果您使用mongoose.createConnection()打开单独的连接,但是尝试通过mongoose.model('ModelName')访问模型,它将无法按预期工作,因为它没有连接到活动数据库连接。 在这种情况下,通过您创build的连接访问您的模型:
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
mongoose.connect用于连接到相同的数据库,尽pipe您的数据库是balance或replicaSet
db.model是针对Mongo开放的多个连接,每个都有不同的读/写设置