NodeJS连接MongoDB报错TypeError: db.collection is not a function求助
问题原因
你使用的mongodb Node.js驱动版本为3.x及以上,可查看项目根目录下package.json中mongodb依赖的版本号确认。该版本中MongoClient.connect回调返回的第二个参数是MongoClient实例,而非直接的数据库对象,因此你直接将返回值赋值给db后调用collection方法会触发类型错误。
解决方案
修改server.js文件两处代码即可:
- 补充缺失的express依赖引入
- 从返回的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
相关产品推荐
相关产品推荐

