#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();
});