如何修复TypeError:无法读取我的MEAN堆栈应用程序中未定义的属性“ map”?

时间:2019-03-26 19:02:05

标签: javascript node.js angular typescript mean-stack

在我的应用中,当我从 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),可以完美地打印帖子数据。

这是它的样子,

enter image description here

关于此错误的关于SO的其他问题与我的情况不符。我仔细地检查了他们。

即使是最小的线索也将意味着巨大的帮助。谢谢。

0 个答案:

没有答案