在前端的帖子中更新Likes数组

问题描述

我在后端有一个喜欢帖子的PUT路由,它将用户ID添加到帖子中的likes数组中。当在Postman上测试时(通过在正文中提供帖子),并且likes数组已更新,效果很好。但是,当在前端单击该图标时,我希望Likes数组更新,但是我不确定如何更新帖子的状态。 result在前端以200状态代码显示响应,但据我所知。

如何在前端更新Likes数组?

Post.js

const Post = (props) => {
  const [post,setPost] = useState({});
  const [error,setError] = useState(false);
  const id = props.match.params.id;

  const loadSinglePost = (id) => {
    read(id).then((data) => {
      if (error) {
        console.log(data.error);
        setError(data.error);
      } else {
        setPost(data);
        console.log(data);
      }
    });
  };

  useEffect(() => {
    loadSinglePost(id);
  },[props]);

  const like = (id) => {
    const {user: { _id },token} = isAuthenticated();
    fetch(`${API}/like/${_id}`,{
      method: "PUT",headers: {
        "Content-Type": "application/json",Authorization: `Bearer ${token}`,},body: JSON.stringify({
        id: id,}),})
      .then(result => { console.log(result)})
      .catch((err) => {
        console.log(err);
      });
  };
  return (
    <div>
      <Navbar />
      <div>
        <h3>{post && post.title}</h3>
          <p>
            {post && post.author ? post.author.name : ""}
          </p>
        <p>{post && post.body}</p>
        <h5>{post && post.likes && post.likes.length} likes</h5>
        <img
          onClick={() => {
            like(id);
          }}
          alt="..."
        />
      </div>
    </div>
  );
};

export default Post;

controllers / post.js

exports.like = (req,res) => {
  Post.findByIdAndUpdate(req.body._id,{
    $push: {likes: req.profile._id}
  },{new: true}).exec((err,result) => {
    if (err) {
      return res.status(422).json({error: err})
    } else {
      return res.json(result)
    }
  })
}

exports.readById = (req,res) => {
  const id = req.params.id
  Post.findById(id)
    .then(post => res.json(post))
    .catch(err => res.status(400).json('Error: ' + err));
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)