【问题标题】:Spring Reactive Mongo DB - findById() not returning valueSpring Reactive Mongo DB - findById() 不返回值
【发布时间】:2022-10-04 21:59:56
【问题描述】:

我的代码 sn-p :

@GetMapping("/getBook/{id}")
    public Mono<Book> getBook(@PathVariable("id") final String id)
    {
        return repo.findById(id);
    }

Postman 中的响应是空白的:- ...我期待得到响应。我究竟做错了什么 ?

书类:-


@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "Book")
public class Book {

    @Id
    private int id;

    private String bookName;
    private String authorName;
}

【问题讨论】:

  • 数据库中没有 ID 为 1 的书 :)
  • 有。检查了它。
  • 邮递员在响应中给出什么状态代码?还添加存储库定义。
  • 您的“_id”是一个整数值,并且在您的 findById 中您正在获取一个字符串。
  • 您能否分享您对本书对象的 pojo,以了解 Id 列是如何定义的。列名应该是_id,数据类型应该是传统的整数

标签: java reactive-programming spring-webflux


【解决方案1】:

您可以尝试使用 findAllbyId 方法作为测试,看看它是否返回任何数据。 以防万一,这意味着您的数据会连贯地保存在您的数据库中。 因此,您必须查看您的 PathVaribale 作为示例,使用 _id 而不是 id。 您可以在存储库中编写方法 findById 并为其提供必要的参数和返回类型并尝试使用它。 我在这里没有假设任何事情,我只是在建议。 谢谢

【讨论】:

    【解决方案2】:

    在 Book 类中 Id 是一个字段,然后尝试使用 findOne 方法,它会给出一个唯一的结果。您必须更改方法的返回类型。也许它会解决你的问题。

    预订 findOne(String id);

    注意:没有问题 Optional findById(ID id);

    【讨论】:

    • 如果问题仍未解决,请分享您的图书课程。
    猜你喜欢
    • 2019-03-14
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2023-03-12
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多