1. ホーム
  2. node.js

[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない

2022-02-04 10:08:43

質問

を試しています。 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) {}

また、(一応)node JS用の最新のMongoDBパッケージをインストールしたことに注意してください( npm インストール mongodb ) で、MongoDB のバージョンは MongoDB Enterprise 3.4.4 で、MongoDB Node.js ドライバーは v3.0.0-rc0 です。

どのように解決するのですか?

私も同じことに遭遇しました。package.json の mongodb の行を "mongodb": "^2.2.33" に変更します。MongoDB Driver/ node_modules 等を削除して mongodb npm をアンインストールしてから npm をインストールすると、このバージョンがインストールされます。

これで私の場合、問題は解決しました。バグかドキュメントを更新する必要があるようです。