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

NodeJS连接MongoDB报错TypeError: db.collection is not a function求助

问题原因

你使用的mongodb Node.js驱动版本为3.x及以上,可查看项目根目录下package.json中mongodb依赖的版本号确认。该版本中MongoClient.connect回调返回的第二个参数是MongoClient实例,而非直接的数据库对象,因此你直接将返回值赋值给db后调用collection方法会触发类型错误。

解决方案

修改server.js文件两处代码即可:

  1. 补充缺失的express依赖引入
  2. 从返回的MongoClient实例中调用db()方法获取对应数据库实例
    修改后的完整代码如下:
// 补充express引入
var express = require('express');
var MongoClient = require('mongodb').MongoClient;

var app = express();
var db;

app.get('/', function(req, res) {
    db.collection('product').find().toArray(function (err, docs) {
        if (err) {
            console.log(err);
            return res.sendStatus(500);
        }
        res.send(docs);
    })
})

// 回调参数重命名为client更清晰
MongoClient.connect('mongodb+srv://test:password@cluster0.jatcp.mongodb.net/myFirstDatabase?retryWrites=true&w=majority', function (err, client) {
    if (err) {
        return console.log(err);
    }
    // 从client实例获取指定数据库对象,参数对应连接串中的数据库名
    db = client.db('myFirstDatabase');
    app.listen(3012, function () {
        console.log('API app started');
    })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:06:04