我对mongoosejs中模型的使用感到有点困惑
可以通过以下方式使用猫鼬创建模型
使用猫鼬
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返回的模型之间的区别是什么。什么时候使用什么,创建/获取模型的推荐方法是什么?
发布于 2012-10-09 19:33:30
mongoose.model将定义的模型绑定到通过调用mongoose.connect创建的默认连接。db.model将模型绑定到通过调用var db = mongoose.createConnection创建的连接。doc.model使用doc的模型所连接的连接按名称查找另一个模型。这三种方法都可以合理地应用在同一个程序中;使用哪一种仅取决于具体情况。
发布于 2012-10-13 23:36:19
好的,下面是I found
重要!如果您使用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() // worksvs
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发布于 2016-05-02 02:46:03
mongoose.connect是用于连接到同一个数据库的,尽管您的数据库是balance或replicaSet。
db.model用于向Mongo开放的多个连接,每个连接具有不同的读/写设置
https://stackoverflow.com/questions/12806559
复制相似问题