当前位置: 首页 > 知识库问答 >
问题:

在响应流之间切换

长孙诚
2023-03-14

我试图在数据库中创建一个新记录,但是在我需要获取另一个记录并从中获取一些数据并将其设置为新记录之前

public Mono<Subject> create(Mono<Subject> subject) {
    return subject
            .flatMap(s -> subjectRepository.findById(s.getParentId()))
            .flatMap(parent ->
                    subject.doOnNext(child -> {
                        child.setParentId(parent.getId());
                        child.setCreatedDate(LocalDateTime.now());
                        child.setRoute(Utils.buildRoute(child, parent));
                    }))
            .flatMap(subjectRepository::insert);
}

我的错误是什么?如何纠正?

共有2个答案

融烨磊
2023-03-14

试试这个片段。

return subject
    .flatMap(s -> {
        return repository.findById(s.getParentId())
                .flatMap(p-> {
            s.setParentId(p.getId());
            s.setCreatedDate(LocalDateTime.now());
            s.setRoute(Utils.buildRoute(s, p));
            return repository.save(s);
        });
    });
令狐新翰
2023-03-14

主题。doOnNext从未订阅,因此从未实际执行。另外,doOn***运算符是“副作用”运算符,您不应该在这些运算符中实现业务逻辑或I/O操作。你可以试试这样:

return subject
    .flatMap(s -> subjectRepository.findById(s.getParentId())
        .map(parent -> {
          s.setParentId(parent.getId());
          s.setCreatedDate(LocalDateTime.now());
          s.setRoute(Utils.buildRoute(child, parent));
          return s;
        }))
    .flatMap(subjectRepository::insert);
 类似资料:
  • 问题内容: 大家好,我仍在从事这个libgdx项目的工作,我试图找出将屏幕切换到游戏屏幕的最佳方法。现在,当单击一个按钮时,我需要它来切换到游戏屏幕。我已经看到了一些扩展游戏类的实现方式,但是我不确定这里最好的方法是什么。如果您看到一些可以改进的代码,请告诉我。 这是主要的应用程序类: 问题答案: 这就是我始终执行屏幕切换的方式: 首先,主类需要扩展Game(From ),然后您需要具有一个新的t

  • 大家好,我仍然在做这个libgdx项目,我正在努力找出最好的方法来改变我的游戏屏幕现在,当一个按钮被点击时,我需要它转换到游戏屏幕。我见过一些扩展game类的实现,但我不确定从这里开始最好的方法是什么。如果你看到一些可以改进的代码,请让我知道。 以下是主要的应用程序类:

  • 我在class1中创建了一个场景,然后在Class2中创建了一个scene2。如何在两者之间切换? 这是第二节课,我有另一个场景。

  • 我有一个网站,它包括index.html和style.css和images文件夹。并且,我想在我的网站的主页面上创建一个按钮“切换到另一个主题”(所以index.html),它将在两个CSS之间切换。你能告诉我吗: > 是否需要有两个css,如-style1.css和style2.css? 我是否需要有2个索引页 a)link href=“css/style1.css”rel=“styleshee

  • 描述 (Description) data-responsive-toggle属性用于菜单切换。 切换有助于在小屏幕尺寸上显示菜单。 例子 (Example) 以下示例演示了在Foundation中使用响应式导航菜单 - <!DOCTYPE html> <html> <head> <title>Foundation Template</title> <meta nam

  • 我有以下对象,它的值是通过REST调用设置的,如下所示。 来自Rest呼叫的数据集。 rest调用的返回值采用以下格式,这就是我将其注释为文本的原因。 之后,使用这个响应,我将它作为一个值传递给调用我的客户端。 但是当我发送信息时,我不想将其命名为文本。我想将其称为描述。因此,我的响应如下: 查询/指针 1。有没有一种方法可以做到这一点,而不必手动设置它? 2。这个头文本用于不同的REST调用。在