node.js - 使用 MongoClient v3.0 时 db.collection 不是函数

标签 node.js mongodb

我一直在尝试W3schools tutorial在带有 MongoDB 的 nodeJS 上。

当我尝试在 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) {}

另外,请注意(以防万一)我已经为 node JS 安装了最新的 MongoDB 包(npm install mongodb),并且 MongoDB 版本是 MongoDB Enterprise 3.4.4,带有 MongoDB Node .js驱动v3.0.0-rc0。

最佳答案

对于 MongoDB 原生 NodeJS 驱动程序 3.0 版的用户:

(适用于“mongodb”:“^3.0.0-rc0”或package.json中的更高版本,希望继续使用最新版本的人。)

MongoDB native NodeJS driver 的 2.x 版中您将获得数据库对象作为连接回调的参数:

MongoClient.connect('mongodb://localhost:27017/mytestingdb', (err, db) => {
  // Database returned
});

根据changelog对于 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();
  });
}); 

关于node.js - 使用 MongoClient v3.0 时 db.collection 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662220/

相关文章:

node.js - 无法使用选项 'outFile' 编译模块,除非 '--module' 标志为 'amd' 或 'system'

javascript - 产品中的 Angular 4 SEO 友好解决方案

javascript - 通过关联对插入数据进行序列化

javascript - Hyperledger 锯齿波 JavaScript SDK :submitted batches are invalid

mongodb - 如何将 AWS AppSync 连接到 MongoDB?

python - 使用 pymongo 将 JSON 导入 mongoDB

javascript - 与 node.js 的 ssh 持久 session

javascript - mocha 测试需要外部 js 文件

MongoDB Capped Collection 最大允许大小

javascript - NodeJS 提供来自 base64 的图像