Pra*_*ate 14 mongoose mongodb node.js odm
我对mongoosejs中模型的使用感到困惑
可以使用mongoose以这些方式创建模型
使用Mongoose
var mongoose = require('mongoose');
var Actor = mongoose.model('Actor', new Schema({ name: String }));
Run Code Online (Sandbox Code Playgroud)
使用连接
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');
Run Code Online (Sandbox Code Playgroud)
使用现有的Model实例
var doc = new Tank;
doc.model('User').findById(id, callback);
Run Code Online (Sandbox Code Playgroud)
现在返回的模型之间有什么区别Mongoose.model
,Connection.model
和Model.model
.何时使用什么,创建/获取模型的推荐方法是什么?
Joh*_*yHK 17
mongoose.model
将定义的模型绑定到通过调用创建的默认连接mongoose.connect
.db.model
将模型绑定到通过调用创建的连接var db = mongoose.createConnection
.doc.model
使用doc
模型所依赖的连接按名称查找另一个模型.这三个都可以在同一个程序中合理使用; 使用哪一个取决于具体情况.
Pra*_*ate 11
好的,这就是我找到的
重要!如果使用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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)