2012-10-09 1 views
11

대 전에서 모델의 사용과 조금 혼란 스러워요 mongoosejsMongoose.model Connection.model 대 Model.model

모델은 몽구스을 사용하여 다음과 같은 방법

에 몽구스를 사용하여 만들 수 있습니다

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.modelModel.model에 의해 반환 된 모델의 차이점은 지금 무엇을. 무엇을 사용해야하는지, 모델을 만들거나 가져 오는 데 권장되는 방법은 무엇입니까?

답변

13
  1. mongoose.modelmongoose.connect을 호출하여 생성 된 기본 연결에 정의 된 모델을 연결합니다.
  2. db.modelvar db = mongoose.createConnection을 호출하여 만든 연결에 모델을 연결합니다.
  3. doc.modeldoc의 모델이 연결된 연결을 사용하여 다른 모델을 이름으로 검색합니다.

세 프로그램 모두 동일한 프로그램에서 현명하게 사용할 수 있습니다. 어느 것을 사용할지는 상황에 달려 있습니다.

8

여기 확인은 무엇 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() // 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 
0

mongoose.connect를 데이터베이스 균형 또는 replicaSet

이 있지만 당신이 동일한 데이터베이스에 연결됩니다에 대한

db.model은 읽기/쓰기 설정이 서로 다른 다중 연결 용입니다.