2017-05-23 2 views
0

Je développe une application de chat où les utilisateurs peuvent avoir des conversations privées. J'utilise nodejs avec socketio et mongodb. J'ai besoin d'avoir des relations entre certains schémas comme le chat et le schéma de threads, où un schéma de discussion est constitué d'un thread (identifiant ou nom). Le schéma Thread est là pour récupérer des conversations facilement. J'ai trouvé quelques réponses liées aux relations entre les modèles dans mongoose mais je ne suis pas tout à fait sûr comment cela fonctionne. C'est le code que j'ai essayé. Comment créer ce genre de relation?Relations entre schéma dans mongoose et 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 } 
}); 

schéma fil

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

schéma utilisateur

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

Répondre

0

Il a appelé la population à mangouste, vous pouvez remplir ces champs d'autres collections:

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