仅显示登录用户的帖子

Posted

技术标签:

【中文标题】仅显示登录用户的帖子【英文标题】:shows posts of only the logged in user 【发布时间】:2020-12-05 04:30:33 【问题描述】:

我创建了一条路线来获取登录用户的帖子,但是现在当我为此路线调用 api 时,我正在获取所有用户的帖子。我应该在此处更改什么,以便仅获取该登录用户的帖子,而不是获取数据库中所有用户的帖子?

route.js

router.get('/', auth, async (req, res) => 
    try 
      const posts = await Post.find().sort( date: -1 );
      res.json(posts);
     catch (err) 
      console.error(err.message);
      res.status(500).send('Server Error');
    
  );

帖子的模型架构

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PostSchema = new Schema (
    user: 
        type: Schema.Types.ObjectId,
        ref: 'users'
    ,
    title:
        type: String,
        required: true
    ,
    text: 
        type: String,
        required: true
    ,
    name: 
        type: String
    ,
    
    email: 
            type: String
    
    ,
    age: [
        type: String,
        required: true
       
    ],
    date: 
        type: Date,
        default: Date.now
    
    
)

module.exports = Post = mongoose.model('post', PostSchema)

【问题讨论】:

在您的帖子检索中添加一个唯一标识登录用户的参数? 【参考方案1】:

您需要将filter 参数传递给find 方法。

假设您的 auth 中间件将经过身份验证的用户添加到 req 对象,route.js 的第 3 行应该是:

      const posts = await Post.find( user: req.user._id ).sort( date: -1 );

【讨论】:

以上是关于仅显示登录用户的帖子的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 如何显示已登录用户已阅读帖子

案例:基于SSM的bbs论坛

Spring Boot 仅针对没有 thymeleaf 登录的用户显示注销按钮

仅显示与登录用户在同一组中的用户

如何仅在 ASP.NET MVC 中仅显示当前登录用户创建的项目

oboo[12] : 如何仅显示登录用户创建的发票?