我用猫鼬填充有关创建帖子的用户信息的“帖子架构”。
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有任何选项可以解决此问题,并且用户创建的所有帖子都必须向其请求结果。
答案 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)