h-kouji
@h-kouji (浩二郎 平田)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Spring Fluxについて

解決したいこと

SpringBootでNeo4Jへアクセスを行うアプリを作っています。
↓のチュートリアルを参考にしながら
https://neo4j.com/developer/spring-data-neo4j/

RestAPIでURLパラメータを受け取り、Neo4Jデータをブラウザに表示されたいのですが、
表示がうまくいきません。

下記のクラス:MovieControllerのgetMovies()あたりが問題だと思いますが、
原因を教えていただけると幸いです。

デバック実行をするとうまくデータは取れていますが、ブラウザに以下のようなデータが出てきてしまいます。

URL:http://localhost/movies

と入力すると以下のデータが出てきます。

data:{}
data:{}
data:{}
data:{}
data:{}
data:{}
data:{}
data:{}
data:{}
data:{}
data:{}
data:{}

MovieController

@SpringBootApplication

@RestController
@RequestMapping("/movies")
public class MovieController {

	private final MovieRepository movieRepository;

	public static void main(String[] args) {
		SpringApplication.run(MovieController.class, args);
	}
	
    @Bean(ReactiveNeo4jRepositoryConfigurationExtension.DEFAULT_TRANSACTION_MANAGER_BEAN_NAME)
    public ReactiveTransactionManager reactiveTransactionManager(
            Driver driver,
            ReactiveDatabaseSelectionProvider databaseNameProvider) {
        return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);
    }
	
	public MovieController(MovieRepository movieRepository) {
		this.movieRepository = movieRepository;
	}
	
	//更新
	@PutMapping
	Mono<MovieEntity> createOrUpdateMovie(@RequestBody MovieEntity newMovie) {
		return movieRepository.save(newMovie);
	}
	
	//取得(全データ)
	@GetMapping(value = { "", "/" }, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
	Flux<MovieEntity> getMovies() {
		return movieRepository.findAll();
	}

MovieEntity

package com.example.demoneo4j;

import java.util.HashSet;
import java.util.Set;

import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Property;
import org.springframework.data.neo4j.core.schema.Relationship;
import org.springframework.data.neo4j.core.schema.Relationship.Direction;

@Node("Movie")
public class MovieEntity {
    @Id 
    private final String title;

    @Property("tagline") 
    private final String description;

    @Relationship(type = "ACTED_IN", direction = Direction.INCOMING) 
    private Set<PersonEntity> actors = new HashSet<>();

    @Relationship(type = "DIRECTED", direction = Direction.INCOMING)
    private Set<PersonEntity> directors = new HashSet<>();

    public MovieEntity(String title, String description) { 
            this.title = title;
            this.description = description;
    }
}

MovieRepository

package com.example.demoneo4j;


import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository;

import reactor.core.publisher.Mono;

public interface MovieRepository extends ReactiveNeo4jRepository<MovieEntity, String> {
	Mono<MovieEntity> findOneByTitle(String title);
}
0

1Answer

(全然詳しくないので的外れだったらすいません。)

デバック実行をするとうまくデータは取れていますが

とのことなので、ブラウザでうまく表示されてないだけの可能性はないですかね?
curlコマンドを使用してみたらどうでしょうか。
(ちょっと調べてみましたが、ブラウザで動作確認しているサンプルが存在しなかったので。みんなcurlで動作確認してますね。chromeのdevelopper console > net workをみればもう少しわかるかもしれません)

0Like

Your answer might help someone💌