db.collection不是一个函数

时间:2017-12-22 06:47:10

标签: node.js mongodb nosql

我想使用MongoDBNodejs集合中插入一个条目。这是我的代码:

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

MongoClient.connect('mongodb://localhost:27017/TodoApp', (err, db) => {
  if (err) {
    return console.log('Unable to connect to MongoDB server');
  }
  console.log('Connected to MongoDB server');

  db.collection('Todos').insertOne({
    text: 'Something to do',
    completed: false
  }, (err, result) => {
    if (err) {
      return console.log('Unable to insert todo', err);
    }

    console.log(JSON.stringify(result.ops, undefined, 2));
  });

  db.close();
});

当我运行代码时,它显示以下错误:

错误:

TypeError: db.collection is not a function

3 个答案:

答案 0 :(得分:5)

卸载现有的mongodb软件包并使用以下命令重新安装解决了问题

npm uninstall mongodb --save
npm install mongodb@2.2.33 --save 

版本MongoDB> = 3 - 该数据库变量实际上是您尝试访问的对象的父对象。如果你使用mongo 3 +:

const myDb = db.db('YourDatabase') 
myDb.collection('YourDatabase).insertOne .... 

答案 1 :(得分:2)

您可以按照以下方式重写代码

MongoClient.connect(url,(err,db) =>{ 
  const database= db.db('TodoApp')
  database.collection('Todos').insertOne({})
}

答案 2 :(得分:1)

此错误的原因是NodeJs驱动程序的版本。 TypeError:db.collection不是函数。。如果版本大于3.0.1,则必须将数据库更改为客户端。有关更多信息,请检查此页面,它对我有帮助! [db.collection is not a function when using MongoClient v3.0

希望有帮助!