在 Node Express 中获取一个用户的所有帖子

Getting all posts that by one user in Node express

提问人:Ddd 提问时间:11/16/2023 更新时间:11/16/2023 访问量:38

问:

我有 2 个模型用户和帖子,我需要编写功能,在个人资料页面的路由 (/profile/:login) 中获取所选用户的所有帖子,您可以在其中找到当前用户的所有帖子。我将不胜感激任何帮助 用户模型:

const userSchema = new mongoose.Schema({
    login: {
        type:String,
        requeired: true,
        unique:true
    }, 
    email: {
        type:String,
        requeired: true,
        unique:true
    }, 
    passwordHash:{
        type:String,
        required:true,
    },

    avatarURL:String,
}, 

{
    timestamps:true,
}
)
export default mongoose.model("User", userSchema);```

Post model;
```import mongoose  from "mongoose";
const postSchema = new mongoose.Schema({
    title: {
        type:String,
        requeired: true,
        unique:true
    }, 
    text: {
        type:String,
        requeired: true,
        unique:true
    }, 
    viewsCount:{
        type:Number,
        default:0
    },
    imageURL:String,
    user: {
        type:mongoose.Schema.Types.ObjectId,
        ref:"User",
        required: true,
    }, 

}, 
{
    timestamps:true,
}
)
export default mongoose.model("Post", postSchema);```

reactjs node.js mongodb mongoose mongoose-schema

评论

0赞 Ddd 11/16/2023
我只有 getAll,如果它有用的话看起来像这样 PostController:index.js:我试图重写 getAll 函数,但我还没有这方面的技能export const getAll = async (req, res) =>{ const posts = await PostModel.find().populate("user").exec() res.json(posts) }app.post("/posts", checkAuth ,PostCreateValidation, PostController.create)

答:

0赞 jQueeny 11/16/2023 #1

下面是一个非常简单的查询,它将根据路由路径中的值获取所有文档:Postuserid

app.get('/profile/posts/:userid', async (req, res, next) => {
    try {
        const posts = await Post.find({user: req.params.userid});
        console.log('posts==', posts);
        res.status(200).json({
           posts : posts
        });
    } catch(err) {
       console.log(err)
       res.status(200).json({
          message : 'No post found'
       });
    }
});

或者,如果您正在使用会话,它将是:

app.get('/profile/posts', async (req, res, next) => {
    try {
        const posts = await Post.find({user: req.session.userid});
        console.log('posts==', posts);
        res.status(200).json({
           posts : posts
        });
    } catch(err) {
       console.log(err)
       res.status(200).json({
          message : 'No post found'
       });
    }
});

编辑:刚刚看到您的评论。

根据您当前的函数,您可以对其进行修改以创建如下所示的函数:getAllgetPostsByUser

export const getPostsByUser = async (req, res) =>{
    const posts = await Post.find({user: req.params.userid}).populate("user");
    res.status(200).json({
        posts : posts
    }); 
} 

那么你的路线将是这样的:

app.get("/profile/:userid/posts", checkAuth, ControllerName.getPostsByUser)