【发布时间】:2020-12-31 06:39:01
【问题描述】:
我是 mongoose 和 rest API 的新手,我在检索每个集合时遇到问题,请参阅另一个文档
所有这些架构都经过编辑以使其易于阅读,因为真实情况我有更多字段,我认为不需要显示
我有一个像这样的user schema 数据:
{
"_id": "123"
"username": "Paijo",
"email": "paijo@gmail.com"
}
{
"_id": "345"
"username": "Flix",
"email": "Flix@gmail.com"
}
我有 message schema 这样的数据:
{
"_id": "5f525b2ac1267e868e882fbc",
"roomId": "123_345",
"latestMessage": "Bisa lahh cujkkkk",
"updatedAt": {
"$date": "2020-09-05T07:00:27.846Z"
},
"createdAt": {
"$date": "2020-09-04T15:20:10.840Z"
}
}
我想查询roomId中是否有一些user _id并检索user schema和message schema的所有字段。
假设我使用user _id 123 登录,我想在roomId 中获取包含123 的消息以及345 的详细用户,
我想要获取的预期结果是:
{
"_id": "5f525b2ac1267e868e882fbc",
"roomId": "123_345",
"latestMessage": "Bisa lahh cujkkkk",
"updatedAt": {
"$date": "2020-09-05T07:00:27.846Z"
},
"createdAt": {
"$date": "2020-09-04T15:20:10.840Z"
},
"username": "Flix", // get result from user schema which has _id 345
"email": "Flix@gmail.com" // get result from user schema which has _id 345
}
目前我只能使用此查询获取包含用户登录的_id 的所有消息,但我不知道如何在roomId 中获取另一个ID 的详细用户
exports.listChat = async (req, res)=>{
const userID = req.userID
const listChat = await ChatRoom.find({roomId: new RegExp(userID)}).select("-message")
console.log('listChat' , listChat)
res.send(listChat)
}
【问题讨论】:
标签: node.js mongodb express mongoose aggregation-framework