在SpringDataREST客户端实现中javascript与额外列的多对多关系?

lstz6jyr  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(243)

我目前正在尝试在springdatarest中实现一个多对多关系,这个关系在客户机(reactjs)上使用。为简单起见,我尝试实施本教程:

+---------+         +------------+         
| post    |         | post_tag   |         +-------------+
+---------+         +------------+         | tag         | 
| id      |---------| post_id    |         +-------------+
| title   |         | tag_id     |---------| id          |
+---------+         | created_on |         | name        | 
                    +------------+         +-------------+

我用一些示例数据(mysql)进行了测试:

INSERT INTO tag (name) VALUES ('sports');
INSERT INTO post (title) VALUES ('Post One');
INSERT INTO post_tag (post_id, tag_id, created_on) VALUES (1, 1, '2021-02-01');

导航到后 localhost:8081/api/postTags 我遇到这样的情况:

{
  _embedded: {
    postTags: [
      {
        createdOn: "2021-02-01T00:00:00.000+00:00",
        _links: {
          self: {
            href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1"
          },
          postTag: {
            href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1"
          },
          tag: {
            href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1/tag"
          },
          post: {
            href: "http://localhost:8081/api/postTags/com.springreact.shop.db.PostTagId@3e1/post"
          }
        }
      }
    ]
  },
  _links: {
    self: {
      href: "http://localhost:8081/api/postTags"
    },
    profile: {
      href: "http://localhost:8081/api/profile/postTags"
    }
  }
}

posttag的url是无效的,这可能是因为嵌入,有什么想法我可以修复它吗?
另外,由于额外的posttag联合表,我不知道如何在客户机(axios)上发布到客户机。从java开始,首先创建post和tag,然后将它们连接在一起+设置附加字段是有意义的。

// attempt one
    axios.post("/api/postTags", 
      { 
        postId: '/api/posts/1', 
        tagId: '/api/tags/1', 
        createdOn: '2021-01-01' 
      },
      {
        headers: {
         "Content-Type": "application/json",
        }
      }
     );

    // attempt two
    axios.put("/api/postTags/1", "/api/posts/1", {
      headers: {
        "Content-Type": "text/uri-list"
      }
    });

    axios.put("/api/postTags/1", "/api/tags/1", {
      headers: {
        "Content-Type": "text/uri-list"
      }
    });

现在我不知道我下一步能做什么。。甚至可以实现吗?我听说embeddedid可能不受支持。另外,我没有找到任何解决方案如何通过端点添加/连接数据。我发现的大多数例子只涉及多对多关系,没有额外的列。
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题