通过Postman向MongoDB提交数据失败:返回200但无数据存入
Spring Boot 向 MongoDB 存数据返回200但数据未入库的排查与解决
核心问题与修复方案
1. 实体类缺失主键标识(关键原因)
MongoDB 文档必须具备唯一主键_id,你的Blog实体未添加@Id注解,导致Spring Data MongoDB无法生成或识别文档主键,最终数据无法持久化到数据库。
同时实体类存在冗余代码:
@Data注解已包含@Getter、@Setter功能,无需重复添加- 重复导入
@Id、@Document包,属于无效代码
修改后的Blog实体类:
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Data @Document(collection = "blogs") // 可显式指定集合名,不指定则默认用类名小写 @AllArgsConstructor @NoArgsConstructor public class Blog { @Id // 必须添加,对应MongoDB的_id字段 private String id; // 也可使用ObjectId类型,Spring会自动处理主键生成 private String title; private String body; }
2. 检查MongoDB连接配置
确认application.properties/application.yml中的连接配置是否正确,本地MongoDB示例配置:
# application.properties spring.data.mongodb.uri=mongodb://localhost:27017/your_database_name # 或分参数配置 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=your_database_name
若使用远程MongoDB服务(如Atlas),需确认连接串的用户名、密码、集群地址是否正确,同时检查网络连通性。
3. 验证业务逻辑执行情况
可在BlogService中添加日志,确认保存操作是否正常执行:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class BlogService { private static final Logger logger = LoggerFactory.getLogger(BlogService.class); @Autowired private BlogRepository blogRepository; public Blog create(Blog blog) { logger.info("待保存博客内容: {}", blog); Blog savedBlog = blogRepository.save(blog); logger.info("保存后博客数据(含主键): {}", savedBlog); return savedBlog; } // 其他方法保持不变... }
通过日志可确认是否生成了主键id,以及保存操作的执行状态。
4. 接口测试注意事项
调用/add接口时,确保请求体JSON格式正确,无需手动传入id(Spring会自动生成):
{ "title": "测试博客标题", "body": "测试博客内容" }
内容的提问来源于stack exchange,提问作者flat
相关产品推荐
相关产品推荐

