Node.js
MongoDB

Node.jsからmongoDB操作でのdb.collection is not a functionでハマった

mongoDBドライバのバージョンアップ

2017年12月にmongoDB Node.js Driverが3.0にアップデートした模様。

今までの書き方でdb.collection is not a function出てハマりました。

version 2.2

test.js
const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/plactice";

MongoClient.connect(url, (err, db) => {
    db.collection("test", (error, collection) => {
        collection.insertMany([
            { name: 'Bob', age: 24 },
            { name: 'john', age: 30 }
        ], (error, result) => {
            db.close();
        });
    });
});

version 3.0

test.js
const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/plactice";

MongoClient.connect(url, (err, client) => {  //dbからclientに変更
    const db = client.db("plactice")  // 追加
    db.collection("test",(error, collection) => {
        collection.insertMany([
            { name: 'Bob', age: 24 },
            { name: 'john', age: 30 }
        ],(error,result) => {
            client.close();  //db.close()から変更
        });
    });
});

connectの引数のコールバックが今までdbだったものがclientに。

無事にSuccess。