Node.js的MongoClient规范已经改变了
最近刚刚在安装npm后,像往常一样尝试连接时出现了TypeError: db.collection不是一个函数的错误,所以我查了一下,似乎是从3系版本开始规格发生了变化。
现在MongoClient.connect返回一个Client而不是一个DB
http://mongodb.github.io/node-mongodb-native/3.0/upgrade-migration/main/
用法
变更前
const MongoClient = require("mongodb").MongoClient;
const _url = 'mongodb://heroku_xxxxxxxx:lvojimq4uc5lu7fnljpg5b2vig@ds999999.mlab.com:49511/heroku_xxxxxxxx';
MongoClient.connect(_url, (err, db) => {
db.collection('foobar', (err, collection) => {
collection.find().toArray((err, docs) => {
:
:
});
});
});
更改之后
const MongoClient = require("mongodb").MongoClient;
const _url = 'mongodb://heroku_xxxxxxxx:lvojimq4uc5lu7fnljpg5b2vig@ds999999.mlab.com:49511/heroku_xxxxxxxx';
MongoClient.connect(_url, (err, client) => {
// callbackに渡されるオブジェクトが変わった
// db名を明示的に指定してdbオブジェクトを取得する必要がある
const db = client.db('heroku_xxxxxxxx');
db.collection('foobar', (err, collection) => {
collection.find().toArray((err, docs) => {
:
:
});
});
});