努力していますW3schools チュートリアル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 で MongoDB をインストールします)、MongoDB バージョンは MongoDB Enterprise 3.4.4、MongoDB Node.js ドライバー v3.0.0-rc0 です。
ベストアンサー1
MongoDB ネイティブ NodeJS ドライバーのバージョン 3.0 を使用している場合:
(これは、package.json に "mongodb": "^3.0.0-rc0" またはそれ以降のバージョンがあり、最新バージョンを使い続けたい人に適用されます。)
バージョン2.xではMongoDB ネイティブ NodeJS ドライバーデータベース オブジェクトを接続コールバックの引数として取得します。
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();
});
});