当连接到mongodb时,connect不是一个函数

ktca8awb  于 2022-11-03  发布在  Go
关注(0)|答案(5)|浏览(154)

尝试从mongodb网站运行将代码连接到数据库的函数时出错。

const MongoClient = require('mongodb')

const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});

错误为:

client.connect(err => {
  ^

    TypeError: client.connect is not a function

我已经通过npm安装了mongodb,并且URI定义为他们给出的字符串。我还需要其他什么吗?

mbzjlibv

mbzjlibv1#

原因是您应该导入MongoClient类:

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

而不是代码中的以下行:const MongoClient = require("mongodb");

798qvoo8

798qvoo82#

请尝试使用以下方式连接:

const { MongoClient } = require("mongodb");

const uri = "yourUri...";
const databaseName = "yourDBName";

MongoClient.connect(uri, { useNewUrlParser: true }, (error, client) => {
  if (error) {
    return console.log("Connection failed for some reason");
  }
  console.log("Connection established - All well");
  const db = client.db(databaseName);
});
n7taea2i

n7taea2i3#

如果您使用的是MongoClient的旧版本,请尝试安装mongo客户端2.2.33。

npm uninstall mongodb
npm install mongodb@2.2.33

如果您使用的是mongo客户端的较新版本(3.0及以上),那么请按如下所示修改代码。

let MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017', function(err, client){
  if(err) throw err;
  let db = client.db('test');
  db.collection('devices').find().toArray(function(err, result){
    if(err) throw err;
    console.log(result);
    client.close();
    });
 });
ee7vknir

ee7vknir4#

对于这个问题,标准的解决方案是导入clientPromise,因为3.9/4.0以上的版本没有import {Mongoclient}命令。
如果你想用MongoClient
1.停止当前正在运行的服务器
1.在终端中键入npm i mongodb@3.5.9
1.通过npm/yarn run dev重新启动服务器
现在它将工作

lsmd5eda

lsmd5eda5#

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

相关问题