我正在创建一个消息传递应用程序,我需要能够显示与给定用户具有对话历史记录的用户。 我有用户和对话。型号如下。 (有一个邮件集合,其中每个文档都引用一个对话)
//This is the conversation model.
const mongoose = require('mongoose');
const ConversationSchema = new mongoose.Schema({
participants: {
type: Array,
required: true
}
});
const Conversation = mongoose.model('Conversation', ConversationSchema);
//This is the users model (there's more to it, but this is the relevant stuff)
module.exports = Conversation;
const UserSchema = new mongoose.Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
}
});
const User = mongoose.model('User', UserSchema);
module.exports = User;
每个都有一个_id生成。 我正在发送带有用户ID的http请求。 在我的控制器中,使用猫鼬,我可以执行以下操作:
Conversation.find({participants:req.params.user_id})
这将返回一个对话对象数组,每个对话对象都包含一个参与者数组(一个用户ID数组)。 然后,我要做的就是将所有参与者都匹配到“用户”集合,这样我就可以获得每个用户的用户ID,名字和姓氏。
总而言之,我需要发送一个以用户ID作为参数的HTTP请求,并接收与提供的用户具有对话历史记录的用户数组。
下一步是什么?如何将我从相关对话中获得的用户ID与用户集合中的用户ID相匹配?
答案 0 :(得分:0)
尝试一下
app.post('/:user_id', async(req, res) => {
const partisipant = await Conversation.find({id:req.params.user_id});
const userData = await User.find({id:req.params.user_id});
if(!userData || userData != partisipant){
throw ('no data match')
}
//...if found the data, do anything you want
})
使用异步等待从数据库中获取收集数据,并进行比较。
希望这个线索可以为您提供帮助