Почему я не могу получить данные из базы данных mongodb?

#node.js #reactjs #mongodb #express

#node.js #reactjs #mongodb #экспресс

Вопрос:

Он вообще не показывает ошибок. Даже cosole показывает, что база данных подключена. Но он не показывает данные. Когда я перехожу к http://localhost:5000/tasks это показывает

Не удается ПОЛУЧИТЬ / задачи

чего мне здесь не хватает?

 const express = require('express')
const bodyParser = require('body-parser');
const cors = require('cors');
const MongoClient = require('mongodb').MongoClient;
require('dotenv').config()

const uri = `mongodb srv://${process.env.DB_USER}:${process.env.DB_PASS}@cluster0.vwtzw.mongodb.net/${process.env.DB_NAME}?retryWrites=trueamp;w=majority`;

const app = express()

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());

const port =5000;

app.get('/', (req, res) => {
   res.send('hello world!');
 });

const client = new MongoClient(uri, { useNewUrlParser: true , useUnifiedTopology: true });

    client.connect(err => {
    const tasksCollection = client.db("VolunteerNetwork").collection("tasks");

    app.get('/tasks',(req, res) => {
        tasksCollection.find({})
        .toArray( ( err, documents) => {
          res.send(documents);
          console.log(documents);
          console.log('database connected');

        })
      })





});


app.listen(port);
  

после запуска он показывает —

  • не определено

  • база данных подключена

имя базы данных mongo: VolunteerNetwork.tasks

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

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

2. Извините, отредактировал сообщение.

Ответ №1:

маршрут получения находится внутри метода connect — попробуйте реорганизовать код так, чтобы вы открывали соединение при выполнении запроса

  const MongoClient = require('mongodb').MongoClient;
 const uri = `mongodb://localhost:27017`;

 const client = new MongoClient(uri, { useNewUrlParser: true , useUnifiedTopology: true });
 router.get('/tasks',(req, res) => {
    client.connect(err => {
    const tasksCollection = client.db("VolunteerNetwork").collection("tasks");

    tasksCollection.find({})
    .toArray( ( err, documents) => {
       res.send(documents);
        console.log('database connected');
        console.log(documents);
       })
      })
});
  

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

1. с той же ошибкой? работает ли у вас hello world?

2. Да. привет, мир работает для меня. Но, когда я пытаюсь получить данные из mongo, используя localhost:5000/ tasks , это показывает, что ошибка и console.log(documents) возвращает undefined

3. извините, я не видел, как вы отредактировали вопрос — похоже, он не может найти коллекцию «задачи» .. это имя (чувствительно к регистру)?

4. Извините с моей стороны, потому что я недостаточно четко сформулировал вопрос. Теперь я добавил изображение имени базы данных. Я несколько раз проверял, не допустил ли я каких-либо орфографических ошибок, но не обнаружил ни одной. Чувствителен к регистру.

5. Есть ли что-нибудь в ошибке, которая возвращается?

Ответ №2:

Код работает отлично. Это точный подход. Моя ошибка заключалась в том, что я не предоставил доступ к имени пользователя для редактирования / чтения базы данных в MongoDB. Предоставление привилегии сделало работу выполненной.