提问人:Ddd 提问时间:11/16/2023 更新时间:11/16/2023 访问量:38
在 Node Express 中获取一个用户的所有帖子
Getting all posts that by one user in Node express
问:
我有 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);```
答:
0赞
jQueeny
11/16/2023
#1
下面是一个非常简单的查询,它将根据路由路径中的值获取所有文档:Post
userid
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'
});
}
});
编辑:刚刚看到您的评论。
根据您当前的函数,您可以对其进行修改以创建如下所示的函数:getAll
getPostsByUser
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)
评论
export const getAll = async (req, res) =>{ const posts = await PostModel.find().populate("user").exec() res.json(posts) }
app.post("/posts", checkAuth ,PostCreateValidation, PostController.create)