Ошибка типа: невозможно прочитать свойства неопределенного значения (чтение «коллекции») (соединение mongodb)

Я пытаюсь подключиться к базе данных mongodb и получаю ошибку, как показано ниже.

Это дает мне ошибку

TypeError: Cannot read properties of undefined (reading 'collection')
    at C:\Users\Joh\Desktop\chipsproject\server\server.js:22:14
    at Layer.handle [as handle_request] (C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\route.js:149:13)
    at Route.dispatch (C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\route.js:119:3)
    at Layer.handle [as handle_request] (C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\index.js:284:15
    at Function.process_params (C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\index.js:346:12)
    at next (C:\Users\Joh\Desktop\chipsproject\server\node_modules\express\lib\router\index.js:280:10)
    at cors (C:\Users\Joh\Desktop\chipsproject\server\node_modules\cors\lib\index.js:188:7)
    at C:\Users\Joh\Desktop\chipsproject\server\node_modules\cors\lib\index.js:224:17

мой файл подключения выглядит следующим образом

const Express = require('express')
const app = Express()
const cors = require('cors')
app.use(cors());
const MongoClient = require('mongodb').MongoClient


var database;

app.listen(5000, ()=>{
    MongoClient.connect('mongodb://localhost:27017/chips', (err, client)=>{
        database=client.db('chips');
        console.info('connected to database');
    })

})

app.get('/user',(request,response)=>{
    database.collection('users').find({}).toArray((err,results)=>{
        if (err) throw err

        response.send(results);
    })
})

спасибо, я буду признателен за ваш ответ

Я опубликовал свой ответ, пожалуйста, проверьте и дайте мне знать.

Subha 13.07.2024 21:16

Вы неправильно используете драйвер. Какую версию драйвера NodeJS вы используете? См. версию 6.8; МонгоКлиент. Необходимая информация фактически находится в документации. Создайте MongoClient с правильными параметрами и используйте базу данных на MongoClient. Если вам нужен ответ, я напишу его, но я считаю, что документация должна вам помочь.

Chukwujiobi Canon 13.07.2024 21:24

я использую Node.js v22.3.0.

Johannes Mwasanyila J Chriss 15.07.2024 20:15
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка типа: невозможно прочитать свойства неопределенного значения (чтение «коллекции»)

Проблема в том, что к вашей переменной database осуществляется доступ до ее инициализации. Это происходит потому, что соединение с MongoDB является асинхронным, и ваш сервер может обрабатывать запросы до того, как будет установлено соединение с базой данных.

Попробуйте это вместо databse-connection.

let database;

MongoClient.connect('mongodb://localhost:27017/chips')
    .then(client => {
        database = client.db('chips'); // you can also use this "client.db();"
        console.info('Connected to database');

        // Start the server only after successful DB connection
        app.listen(5000, () => {
            console.info('Server is running on port 5000');
        });
    })
    .catch(err => console.error(err));

После этого вы можете выполнить остальную часть операции с базой данных в соответствии с вашими потребностями.

Попробуйте это, это сработает.

Предположение :-

Вы когда-нибудь задумывались над тем, что если вам понадобится экземпляр database для другого модуля, как бы вы это сделали?

--> Хотя это мое предложение, а не фиксированное правило, вам следует определить database-connection в отдельный модуль и, в зависимости от ваших потребностей, импортировать его в другой модуль.

Чтобы узнать, как это сделать, перейдите по ссылке ниже, где я ответил на вопрос.

https://stackoverflow.com/a/78689128/21210375

спасибо, брат, все сработало отлично, теперь они эффективно общаются. я целый день пытался понять, что не так с кодом

Johannes Mwasanyila J Chriss 15.07.2024 20:17

@JohannesMwasanyilaJChriss, пожалуйста. Пожалуйста, примите ответ, чтобы на основании вашего одобрения другие могли воспользоваться им, несмотря на то, что ему проголосовали против. И спасибо за ваше письменное подтверждение.

Subha 16.07.2024 05:18

Другие вопросы по теме