【问题标题】:ReactiveMongoRepository can't save to databaseReactiveMongoRepository 无法保存到数据库
【发布时间】:2022-01-22 17:19:49
【问题描述】:

我是 Java 新手。我正在使用 Webflux 和 ReactiveMongoRepository 创建一个 API。 我尝试从另一个 API 保存我的数据。

我的仓库:

@Repository
public interface AccountApiTrackingRepo extends ReactiveMongoRepository<AccountApiTracking, String> {
}

我的服务实现:

    @Override
    public void findByIdAccountsApiTrack(User user, String accountId){
        AccountApiTracking accountApiTracking = new AccountApiTracking();

        accountApiTracking.setUser(user);
        accountApiTracking.setAccountId(accountId);
        accountApiTracking.setAction("Find account by Id");
        System.out.println(accountApiTracking);
        accountApiTrackingRepo.save(accountApiTracking);
    }

我的服务:

@Service
public interface AccountApiTrackingService {

    public void createAccountsApiTrack(User user, AccountDto accountDto);
    public void findByIdAccountsApiTrack(User user, String accountId);

    Flux<AccountApiTrackingDto> findAll();
}

我的模特:

@Document
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AccountApiTracking implements AutoMapping<AccountApiTrackingDto> {
    @Id
    private String id;
    private User user;
    private String action;
    private AccountDto payload;
    private String accountId;

    @Override
    public String toString() {

        return String.valueOf(action);
    }
}

函数 findByIdAccountsApiTrack() 运行后,我找不到在我的数据库中创建的任何文档。 我可以看到我的变量 accountApiTracking 有数据。但是 accountApiTrackingRepo.save 不起作用。 我错过了什么?

【问题讨论】:

  • 我认为您的 AccountApiTracking 类中不存在 getter 方法
  • @Batek'S 我在 AccountApiTracking 类中使用 lombok 作为 setter 和 getter 方法。
  • 表创建了吗?
  • 尝试返回 Mono 而不是返回 void
  • @RohithV 我需要一个 void 函数。 .subcribe() 解决了我的问题

标签: java spring-boot spring-webflux


【解决方案1】:

在反应式编程中应该订阅任何反应式指令。 你应该 return accountApiTrackingRepo.save(accountApiTracking); 直到您在控制器中使用。 或者对于您的测试用例,您可以在方法调用之后使用“.subscribe()”。

【讨论】:

  • 谢谢。 .subcribe() 解决了我的问题。
  • 在大多数情况下,不建议您自己订阅Mono。这通常由底层框架完成。一个例外是,如果您不想将操作作为主要反应管道的一部分进行操作
猜你喜欢
  • 2019-11-25
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多