尝试从Mongo读取数据时后端无法正常获取数据该如何排查
问题排查与修复方案
一、后端接口问题修复
你当前的/postsGET接口存在两个核心错误:
- GET请求本身没有有效请求体(
req.body),你直接返回req.body自然拿不到任何存储在Mongo的数据 - 你已经完成了Mongo连接,但完全没有执行查询操作,没有读取数据库里的posts集合数据
修复后的后端代码:
app.get ('/posts', async (req , res) => { let db = await connect(); // 从Mongo的posts集合查询所有数据,集合名按你实际存储的名称修改 let posts = await db.collection('posts').find().toArray(); res.send(posts); });
二、服务层代码问题修复
当前服务层代码存在两个错误:
Service.get方法需要传入字符串类型的接口路径,你写的/posts是正则表达式,属于语法错误- 后端返回的是posts数组,不能直接取
response.doc,需要根据接口返回结构调整,如果是查单个帖子可以追加ID参数,如果是查列表需要遍历处理
修复后的服务层代码(以获取全部帖子列表为例):
async get_posts() { // 路径改为字符串类型 let response = await Service.get('/posts') // 接口返回的是数组,遍历处理每一项 return response.data.map(doc => ({ id: doc._id, email: doc.email, title: doc.title, imageDesc: doc.imageDesc, img: doc.img, })); }
补充验证点
- 确认你的Mongo连接方法
connect()返回的是正常的数据库实例,没有连接报错 - 确认你存储数据的集合名和查询时的集合名完全一致,区分大小写
- 可以先在浏览器直接访问
http://你的后端地址/posts,看是否能返回JSON格式的帖子数据,先验证后端接口是否正常,再调试前端服务层代码
内容的提问来源于stack exchange,提问作者lemilevoj
相关产品推荐
相关产品推荐

