猫鼬模型 vs 连接模型 vs 模型模型.



我对猫鼬中模型的使用有点困惑

可以通过以下方式使用猫鼬创建模型

使用猫鼬

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.modelConnection.modelModel.model返回的模型有什么区别,什么时候用什么, 创建/获取模型的推荐方法是什么?

  1. mongoose.model将定义的模型绑定到通过调用 mongoose.connect 创建的默认连接。
  2. db.model将模型绑定到通过调用 var db = mongoose.createConnection 创建的连接。
  3. doc.model使用doc模型绑定的连接按名称查找另一个模型。

这三者都可以在同一个程序中合理地使用;使用哪一个只是取决于情况。

好的,

这是我发现的

重要!如果使用打开了单独的连接 mongoose.createConnection() 但尝试通过以下方式访问模型 mongoose.model('ModelName') 它不会按预期工作,因为它是 未连接到活动的数据库连接。在这种情况下,请访问您的 通过您创建的连接建模:

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

mongoose.connect是让你连接到同一个数据库,尽管你的数据库是平衡的或复制集

db.model 适用于向 Mongo 开放的多个连接,每个连接都有不同的读/写设置

相关内容

  • 没有找到相关文章

最新更新