我正在开发一个聊天应用程序,用户可以在其中进行私人对话。我使用nodejs以及socketio和mongodb。我需要在一些模式(如聊天和线程模式)之间建立一些关系,其中聊天模式由一个线程(id或名称)组成。线程模式可以轻松地检索对话。我发现了一些与猫鼬模型之间关系有关的答案,但我不太清楚它是如何工作的。这是我尝试过的代码。如何建立这种关系?。
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 :(得分:0)
它在mongoose中称为人口,您可以从其他集合中填充此字段:
...
User.findOne({fname: 'John'})
.populate('friends')
.exec()
.then(user=>{
console.log('User - ', user);
})
.catch(err=>{
throw err;
})