Ошибка MongoAtlas: недопустимая схема, ожидаемый mongodb

#node.js #mongodb #mongodb-atlas

#node.js #mongodb #mongodb-atlas

Вопрос:

Я пытаюсь подключиться к MongoAtlas, однако я продолжаю получать Error: invalid schema, expected mongodb

Похоже, я могу подключиться, но он не может получить мою базу данных от MongoAtlas. Моя ошибка try catch возвращает меня (node:5964) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'collection' of undefined

.env

 PORT = 9055
MONGO_URI =mongodb srv://<my-db-username>:<my-password>@cluster0.vossd.mongodb.net/<db-name>?
retryWrites=trueamp;w=majority
  

server.js

 require('dotenv').config();
const port = Number.parseInt(process.env.PORT, 10);
const mongoUri = process.env.MONGO_URI;

const {MongoClient} = require('mongodb');
const express = require('express');

const Application = require('./application');

const application = Application();

const Health = require('./health');
const Product = require('./product');
const Cart = require('./cart');
const Order = require('./order');

async function main() {
  let db;
  try {
    db = await MongoClient.connect(mongoUri); 
    console.log(db)
  } catch (err) {
    console.log(err);
  }

    application.use('/health', Health());
    application.use('/product', Product(db));
    application.use('/cart', Cart(db));
    application.use('/order', Order(db));
    

    const server = application.listen(port, () => {
        const host = server.address().address;
        const port = server.address().port;
        console.log(`Shopping website server up and running, listening at http://${host}:${port}`); 
      });
 }

 main();
  

Все работает нормально, когда я подключен к моей локальной базе данных, поэтому я не уверен, что я делаю неправильно. Любые советы приветствуются. Спасибо!

Комментарии:

1. Обновите драйвер.

2. Это cannot read property 'collection' of undefined может ввести в заблуждение, поскольку вы обнаружили ошибку, возникающую при подключении. Следовательно db , значение равно null, поэтому, если вы получите доступ к коллекции, это выдаст эту ошибку.

Ответ №1:

Это cannot read property 'collection' of undefined может ввести в заблуждение, поскольку вы обнаружили ошибку, возникающую при подключении. Следовательно db , значение равно null, поэтому, если вы получите доступ к коллекции, это выдаст эту ошибку. Ниже приведен пример кода из Mongo Atlas.

 const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb srv://<username>:<password>@test.w7hgn.mongodb.net/<dbname>?retryWrites=trueamp;w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true }); // <-- note the option
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});