我正在创建一个非常基本的社交媒体应用程序,它还允许用户发布状态。数据库中的 Post 模型有一个名为“private”的字段,它将帖子设为私有,只有用户的朋友才能查看。
我有一个 api 端点,它有一个 HTTP Get 方法,我希望它像这样工作: 返回请求用户的所有公开和私人帖子,但仅返回其他用户的公开帖子。
以下代码实现了上述任务,但我试图通过单个查询来完成。
获取请求用户的所有帖子
const loggedInUserPosts = await Post.find({ user: req.user.id }).sort({ date: -1 });
仅获取其他用户的公开帖子
const otherUserPosts = await Post.find({ user: { $ne: req.user.id }, private: false }).sort({ date: -1 });
user 键是 Post 模型中的一个字段,其值等于相应用户的任何用户 ID
答案 0 :(得分:0)
这并没有真正扩展,因为随着社交应用的发展,您本质上会返回许多不必要的帖子,但听起来您正在寻找 $or
运算符({{3 }})
所以,这样的事情应该可行:
await Post.find( { $or: [ { user: req.user.id }, { user: { $ne: req.user.id }, private: false } ] } ).sort( { date: -1 } )
答案 1 :(得分:0)
应用 OR 条件查找属于该用户的帖子或其他用户的所有公开帖子
query={
$or:[
{ user: req.user.Id },
{ user: { $ne: req.user.Id }, private: false }
]
}
Post.find(query)