2012-10-09 18 views
11

Tôi hơi bối rối với việc sử dụng các mô hình trong mongoosejsMongoose.model vs Connection.model vs Model.model

Models thể được tạo ra bằng cầy mangut theo những cách

Sử dụng Mongoose

var mongoose = require('mongoose'); 
var Actor = mongoose.model('Actor', new Schema({ name: String })); 

Sử dụng kết nối

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'); 

Sử dụng hiện Mẫu dụ

var doc = new Tank; 
doc.model('User').findById(id, callback); 

sự khác biệt giữa mô hình được trả về bởi Mongoose.model, Connection.modelModel.model là Bây giờ những gì. và khi nào sử dụng, cách được đề xuất để tạo/tìm nạp mô hình là gì?

Trả lời

13
  1. mongoose.model liên kết mẫu được xác định với kết nối mặc định được tạo bằng cách gọi mongoose.connect.
  2. db.model liên kết mô hình với kết nối được tạo bằng cách gọi var db = mongoose.createConnection.
  3. doc.model tra cứu một mô hình khác theo tên bằng cách sử dụng kết nối mà mô hình của doc được gắn với.

Cả ba có thể được sử dụng hợp lý trong cùng một chương trình; cái nào để sử dụng chỉ phụ thuộc vào tình huống.

8

ok đây là những gì I found

quan trọng! Nếu bạn đã mở kết nối riêng bằng cách sử dụng mongoose.createConnection() nhưng cố truy cập mô hình qua mongoose.model ('ModelName'), nó sẽ không hoạt động như mong đợi vì nó là không được kết nối với kết nối db đang hoạt động. Trong việc tiếp cận trường hợp này mô hình của bạn thông qua kết nối mà bạn đã tạo:

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 
0

mongoose.connect được cho bạn kết nối với cùng một cơ sở dữ liệu, mặc dù cơ sở dữ liệu của bạn là cân bằng hoặc replicaSet

db.model dành cho nhiều kết nối mở cho Mongo, mỗi kết nối có cài đặt đọc/ghi khác nhau