2017-05-23 1 views
0

사용자가 비공개 대화를 할 수있는 채팅 응용 프로그램을 개발 중입니다. socketj와 mongodb와 함께 nodejs를 사용하고 있습니다. 채팅 스키마는 스레드 (ID 또는 이름)로 구성되는 채팅 및 스레드 스키마와 같은 일부 스키마간에 몇 가지 관계가 필요합니다. 대화 목록을 쉽게 찾을 수있는 스레드 스키마가 있습니다. 몽구스 모델 간의 관계에 대한 답변을 찾았지만 어떻게 작동하는지 잘 모르겠습니다. 이것은 내가 시도한 코드입니다. 이런 종류의 관계를 만드는 방법?.mongoose와 mongoDB의 스키마 사이의 관계

const message = new Schema({ 
    sender:{ 
     type : Schema.Types.ObjectId, 
     ref : 'user' 
    }, 
    message:String, 
    thread:{ 
     type : Schema.Types.ObjectId, 
     ref : 'thread' 
    }, 
    created:{ type: Date, default: Date.now } 
}); 

스레드 스키마

const thread = new Schema({ 
    people:[{uname:String}], 
    created:{ type: Date, default: Date.now } 
}); 

그것은 몽구스 인구라고

const User = new Schema({ 
    fname:String, 
    lname:String, 
    uname:{type:String,unique:true}, 
    email:{type:String,unique:true,lowercase:true}, 
    password:String, 
    friends:[{ 
    type : Schema.Types.ObjectId, 
    ref : 'User' 
}] 
}); 

답변

0

사용자 스키마, 당신은 다른 컬렉션에서이 필드를 채울 수 있습니다 :

... 
User.findOne({fname: 'John'}) 
.populate('friends') 
.exec() 
.then(user=>{ 
    console.log('User - ', user); 
}) 
.catch(err=>{ 
    throw err; 
})