按用户ID查找所有帖子

时间:2020-10-07 15:19:03

标签: javascript node.js mongodb express mongoose

我用猫鼬填充有关创建帖子的用户信息的“帖子架构”。

postModule.js

const mongoose = require('mongoose');

 const postSchema = mongoose.Schema({
title:String,
description:String,
datePost:Date,
images:[String],
like:[String],
dislike:[String],
author:{
    type: mongoose.Schema.Types.ObjectId,
    ref:'User'
},
 });


postSchema.pre(/^find/,function(next){
this.populate({
    path:'author',
    select:'photo firstName lastName'
  });
next();
});


 const Post = mongoose.model('Post',postSchema);
 module.exports = Post;

这是 postController.js

中的控制器版本
//Get All User Post
exports.getUsersPost = catchAsync(async(req,res,nex)=>{
const userPost = await Post.find({author:req.params.userId});

res.status(200).json({
    status:"success",
    length:userPost.length,
    data:{
        post:userPost
    }
});
});

postRouter.js

router.route('/get-user-posts/:userId').get(authController.protect,postController.getUsersPost)

我不知道出了什么问题,我在邮递员中收到此错误

Cannot GET /api/v1/get-user-posts/5f719092ba22b8373c72196
有任何选项可以解决此问题,并且用户创建的所有帖子都必须向其请求结果。

1 个答案:

答案 0 :(得分:1)

如果您的app.js如下所示,则端点应为:

/api/v1/post/get-user-posts/5f719092ba22b8373c72196

它使用use()函数中的整个字符串。所以/api/v1/user/**Routes you've defined in your Routes files**

const sessionRoutes = require('./routes/sessionsRoutes'); 
    const userRoutes = require('./routes/userRoutes'); 
    const viewRoutes = require('./routes/viewRoutes'); 
    const postRoutes = require('./routes/postRoutes'); 
    
    app.use('/api/v1/session',sessionRoutes); 
    app.use('/api/v1/user',userRoutes); 
    app.use('/api/v1/post',postRoutes); 
    app.use('/',viewRoutes); 
    module.exports = app;

还要添加和加斜杠以确保app.use('/api/v1/user/', userRoutes)