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) => {
      :
      :

    });
  });
});
广告
将在 10 秒后关闭
bannerAds