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

如何将mono转换为byte[]?

沃驰
2023-03-14

我想使用反应性编程将我的excel文件存储到我的数据库中。在非反应式中,这很容易做到,但我不能在反应式中做类似的事情,我应该写什么来存储它到我的mongo数据库中?

@PostMapping(path = "/file",consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
            produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
    public HttpStatus file(@RequestPart("files") Mono<FilePart> file) {
        return Service.save(excel);
    }
public HttpStatus save(Mono<FilePart> filePartMono) {
        //what to do here to save my file into database
    }
@Collection("data")
public class Excel {
    @Id
    int id;
    private byte[] file;
}

共有1个答案

胡霖
2023-03-14

在使用反应式编程时,您实际上应该使用monoflux,这样您的应用程序才真正是反应式的。这样做的结果是,您必须将服务和控制器方法的返回类型更改为返回mono 。您的完整应用程序应该是反应式的(从REST API到数据库),这样您就可以充分受益于反应式堆栈。

@PostMapping(path = "/file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
             produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
public Mono<HttpStatus> file(@RequestPart("files") Mono<FilePart> file) {
    return Service.save(excel);
}

在您的服务中,您可以执行以下操作:

public Mono<HttpStatus> save(Mono<FilePart> filePartMono) {
    return filePartMono.flatMap { filePart -> // you need flatMap assuming your mongo repository also returns a Mono
        byte[] bytes = // convertion to byte[]

        // save it to the database
    }.map { mongoRepositoryResponse ->
        // depending on the response from mongo repository you compute HttpStatus
    }
}
 类似资料:
  • 更新: 一点我想要实现的内容。我有两个服务--一个通过Http返回me,另一个通过Redis返回。对于这两种情况,我有完全相同的功能-10-15个操作符链,我想要实现的是避免重复代码。 例如:

  • 如何将flux 转换为mono 对象?

  • 首先,我是SpringWebFlux的新手,正在尝试建立一个反应式spring启动项目的POC。我有一个用例,需要将检索到的实体类(PartyDTO)转换为Mono对象(Person:这是一个没有构造函数的第三方业务对象,我无法修改它)。我在谷歌上搜索,但找不到与我的用例相匹配的答案。 第三方对象: 我的课程如下: 调用我的存储库的服务类。 如上图所示,我尝试将平面图与我的自定义映射器一起使用,但

  • 我有一节这样的课 并从外部API向webclient获取数据 我想把数据转换成下面这样。 这是我的尝试 我的方法似乎是同步的。

  • 我的数据库正在返回Flux,我需要将其转换为Mono 如果调用方方法的返回类型只有Mono,我可以很容易地将其映射如下,但由于它是Mono //期望将水果的流量转换为水果列表的单声道并返回给调用者 }

  • 问题内容: 我有一个表示RGB图像的整数数组,想将其转换为字节数组并将其保存到文件中。 在Java中将整数数组转换为字节数组的最佳方法是什么? 问题答案: 正如Brian所说,您需要确定需要什么样的转换。 您是否要将其保存为“正常”图像文件(jpg,png等)? 如果是这样,您可能应该使用Java Image I / O API。 如果要以“原始”格式保存,则必须指定写入字节的顺序,然后使用和NI