nodejs使用mongoose,有三张表,第一张是用户表,第二张是好友表(包含好友id和用户id),第三张表是朋友圈表(包含用户id和朋友圈信息),现在要根据用户id获取到当前用户的朋友圈以后对应好友的朋友圈信息,如何实现
时间: 2023-06-20 22:09:53 浏览: 91
可以通过以下步骤实现:
1. 先查询好友表,获取到当前用户的所有好友id。
2. 根据好友id查询朋友圈表,获取到所有好友的朋友圈信息。
3. 将当前用户的朋友圈信息和好友的朋友圈信息合并。
4. 返回合并后的朋友圈信息。
下面是使用mongoose实现上述逻辑的示例代码:
```javascript
const User = require('./models/user');
const Friend = require('./models/friend');
const Moment = require('./models/moment');
async function getFriendMoments(userId) {
// 查询好友id
const friendIds = await Friend.find({ userId: userId }).distinct('friendId');
// 查询好友的朋友圈信息
const friendMoments = await Moment.find({ userId: { $in: friendIds } });
// 查询当前用户的朋友圈信息
const userMoments = await Moment.find({ userId: userId });
// 合并朋友圈信息
const moments = userMoments.concat(friendMoments);
return moments;
}
// 调用示例
getFriendMoments(userId).then(moments => {
console.log(moments);
}).catch(error => {
console.error(error);
});
```
其中,`User`、`Friend`、`Moment`均为mongoose的model对象,分别对应用户表、好友表和朋友圈表。`getFriendMoments`为获取朋友圈信息的方法,需要传入当前用户的id。在方法内部,先查询好友id,然后根据好友id查询朋友圈信息,并将当前用户的朋友圈信息和好友的朋友圈信息合并。最后返回合并后的朋友圈信息。调用示例中的`userId`为当前用户的id。
阅读全文