在我的应用中,当我从 NodeJS 后端接收帖子时,在 Angular 前端,我尝试使用pipe()
对其进行转换运算符并使用map()
函数。
这是我的angular
代码,它将http
请求发送到后端,
getPosts(userId: string, currentPage: number) {
console.log(userId);
this.http.get<{message: string, posts: any, maxPosts: number }>
('http://localhost:3000/api/post/' + userId)
.pipe(map((postData) => {
console.log(postData);
return { posts: postData.posts.map((post) => {
return {
title: post.title,
content: post.content,
id: post._id,
imagePath: post.imagePath,
creator: post.creator
};
}),
maxPosts: postData.maxPosts};
}))
.subscribe(transformedPostsData => {
this.posts = transformedPostsData.posts;
this.postUpdate.next({
post: [...this.posts],
postCount: transformedPostsData.maxPosts
});
});
}
下面给出了接收此请求的后端功能,
exports.getPosts = (req, res, next) => {
let fetchedPost;
let maxPosts = 10;
Post.find({ creator: req.params.userId }).then(post => {
if(post) {
res.status(200).json({
fetchedPost: post,
message: "Post successful",
max: maxPosts
});
} else {
res.status(500).json({
message: "Failed to get User Post"
});
}
});
}
我的第一个假设是,该请求没有携带应该检索帖子的userId
,然后用console.log(userId)
打印了请求,这是完全可以的。
然后我认为后端没有返回任何帖子或任何null
。然后,我使用了console.log(postData)
,可以完美地打印帖子数据。
这是它的样子,
关于此错误的关于SO的其他问题与我的情况不符。我仔细地检查了他们。
即使是最小的线索也将意味着巨大的帮助。谢谢。