You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js操作MongoDB时如何读取集合内的全部数据?

问题修复方案

核心问题说明

  • collection('secrets') 仅用于获取集合实例对象,不会触发数据查询,需要追加查询方法才能拿到集合内的真实文档
  • 原代码调用db.feed时没有接收查询结果,无法将数据传递给模板渲染

修复后代码

Router.js

router.get('/feed', async (req,res) => {
    try{
        await db.client.connect()
        // 接收feed函数返回的集合数据
        const secretsData = await db.feed(db.client)
        // 将数据传递给模板渲染,模板内可直接使用secrets变量访问数据
        res.render("feed", { secrets: secretsData })
    }catch(err){
        console.log(err)
    }finally{
        db.client.close()
    }
})

Db.js

async function feed(client){
    // 调用find查询全部文档 + toArray转换为可读的数组格式
    let result = await client.db('secret_db').collection('secrets').find({}).toArray()
    console.log(result)
    // 返回查询结果给路由层
    return result
}

额外优化建议

生产环境不建议每次请求都执行connect()和close()操作,反复开关数据库连接会大幅降低接口性能,建议在服务启动时完成一次数据库连接,全局复用连接实例即可。

内容的提问来源于stack exchange,提问作者Ilkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:27:03