私のDBに何かを投稿して取得したいとき、どうやってコントローラを使うべきかを理解する助けが必要です。 Post.javaとPostRepository.javaのみを使用すると、データを挿入したり、データベース全体を "/ posts"のパスに取り込んだりするとうまくいくようです。ファイル内には、すべてのエントリを含むposts配列があります。場合MongoDB POSTとGETレコードを持つSpringコントローラ
Post.java
public class Post {
@Id private long id;
private String content;
private String time;
private String gender;
private String age;
// Constructors
public Post() {
}
public Post(long id, String content, String time, String gender, String age) {
this.id = id;
this.content = content;
this.time = time;
this.gender = gender;
this.age = age;
}
// Getters
public String getContent() {
return content;
}
public long getId() {
return id;
}
public String getTime() {
return time;
}
public String getGender() {
return gender;
}
public String getAge() {
return age;
}
PostRepository.java
@RepositoryRestResource(collectionResourceRel = "posts", path = "posts")
public interface PostRepository extends MongoRepository<Post, String> {
List<Post> findPostByContent(@Param("content") String content);
}
PostController.java
@RestController
public class PostController {
private final AtomicLong counter = new AtomicLong();
//Insert post in flow
@RequestMapping(value="/posts", method = RequestMethod.POST)
public Post postInsert(@RequestBody Post post) {
return new Post(counter.incrementAndGet(), post.getContent(), post.getTime(), post.getGender(), post.getAge());
}
//Get post in flow
@RequestMapping(value="/posts", method = RequestMethod.GET)
public Post getPosts() {
return null; //here I want to return all posts made using postInsert above.
}
}
私はコントローラを使用してデータを投稿することができますが、jsonファイルには保存されませんので、アプリケーションを再起動するとid:1から再開します。しかし、コントローラがなければ、データは保存されます。なぜこうなった?コントローラでデータを保存するにはどうすればよいですか?私はこれが愚かな質問かもしれないことを知っていますが、私は何をすべきか分かりません。
よろしくお願いいたします。しかし、このガイドのコードに従うと、 https://spring.io/guides/gs/accessing-mongodb-data-rest/ これらのコードは、私がアクセスしたときにレコードが保存される必要はありません。 url。なぜ私はこのコードを指定する必要があるのか理解していないだけです。彼らはコントローラを持っていないし、要求はまだ適切に管理されています。愚かな質問をして申し訳ありません、そしてこれに答える時間を取ってくれてありがとう。 – BananaBackend
あなたが指しているガイドでは、データはすでに作成されているものとみなされます。投稿のリクエストでは、ちょうどカールでテストが行われました。いずれもデータベースに保持されません。適切に処理された要求は、データがストアに保存されることを意味するものではありません。 –
答えが正しいかどうかを確認するには、上部に押してください。 –