使用MongoClient v3.0时,当使用db.collection时,会出现“db.collection不是一个函数”的错误。
使用MongoClient v3.0时,当使用db.collection时,会出现“db.collection不是一个函数”的错误。
我一直在尝试使用W3schools的nodeJS和MongoDB教程。
当我在nodeJS环境中实现此示例并使用AJAX调用函数时,我得到了下面的错误:
TypeError: db.collection is not a function at c:\Users\user\Desktop\Web Project\WebService.JS:79:14 at args.push (c:\Users\user\node_modules\mongodb\lib\utils.js:431:72) at c:\Users\user\node_modules\mongodb\lib\mongo_client.js:254:5 at connectCallback (c:\Users\user\node_modules\mongodb\lib\mongo_client.js:933:5) at c:\Users\user\node_modules\mongodb\lib\mongo_client.js:794:11 at _combinedTickCallback (internal/process/next_tick.js:73:7) at process._tickCallback (internal/process/next_tick.js:104:9)
请查看我实现的代码:
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/mytestingdb"; MongoClient.connect(url, function(err, db) { if (err) throw err; db.collection("customers").findOne({}, function(err, result) { if (err) throw err; console.log(result.name); db.close(); }); });
请注意,每当执行到以下部分时会出现错误:
db.collection("customers").findOne({}, function(err, result) {}
另外,请注意(如果有关系的话),我已经安装了最新的MongoDB节点JS包(npm install mongodb),MongoDB版本为MongoDB Enterprise 3.4.4,MongoDB Node.js驱动程序为v3.0.0-rc0。
admin 更改状态以发布 2023年5月21日
对于使用MongoDB本机NodeJS驱动程序的3.0版本的用户:
(这适用于在package.json中有“mongodb”:"^3.0.0-rc0"或更高版本,并希望继续使用最新版本的用户。)
在MongoDB本机NodeJS驱动程序的版本2.x中,您将在连接回调中将数据库对象作为参数获取:
MongoClient.connect('mongodb://localhost:27017/mytestingdb', (err, db) => { // Database returned });
根据3.0版的更改日志,现在您将获得包含数据库对象的客户端对象:
MongoClient.connect('mongodb://localhost:27017', (err, client) => { // Client returned var db = client.db('mytestingdb'); });
close()
方法也已移至客户端。 因此,问题中的代码可以翻译为:
MongoClient.connect('mongodb://localhost', function (err, client) { if (err) throw err; var db = client.db('mytestingdb'); db.collection('customers').findOne({}, function (findErr, result) { if (findErr) throw findErr; console.log(result.name); client.close(); }); });