完成MongoDB连接后如何创建简单查询API获取集合全部记录
操作步骤
1. 修正现有数据库连接的逻辑缺陷
你当前的代码完成MongoDB连接后,没有把数据库实例赋值给提前声明的db变量,后续无法调用数据库操作接口,先修改app.listen中的连接逻辑:
app.listen(port,() => { MongoClient.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true}, (err, database) => { if (err) { console.log("Error occurred connecting to MongoDB...") // 连接失败直接抛出错误终止进程,避免后续无意义报错 throw err } // 赋值数据库实例,你在连接URI中已经指定了库名ecommerce,直接取对应实例即可 db = database.db() // 修正原代码的笔误,把part改为port console.log(`Listening to port ${port}...`) }); })
2. 新增查询Books集合的API接口
在上述代码的下方新增接口逻辑即可:
// 自定义接口路径,这里用/api/books方便识别接口用途 app.get('/api/books', async (req, res) => { try { // 查询Books集合所有记录并转为数组格式 const bookList = await db.collection('Books').find().toArray() // 返回200状态码和查询结果 res.status(200).json(bookList) } catch (err) { // 捕获查询异常,返回错误信息 res.status(500).json({ error: '图书数据查询失败', detail: err.message }) } })
3. 功能验证
服务重启成功后,直接在浏览器访问http://localhost:5000/api/books,或者用curl、postman等工具向该地址发送GET请求,就能拿到Books集合的所有记录。
注意事项
- 注意MongoDB的集合名大小写敏感,请确认你的库中实际存在
Books集合,不要出现拼写错误 - 如果使用MongoDB Atlas云服务,需要先把你当前设备的公网IP加入Atlas的访问白名单,否则会被拦截无法正常查询数据
- 生产环境不要把数据库账号密码等敏感信息硬编码在代码中,建议通过环境变量读取配置
内容的提问来源于stack exchange,提问作者lll
相关产品推荐
相关产品推荐

