Не удается подключиться к заданной c базе данных и коллекции внутри кластера mongoDB Atlas - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю приложение стека MERN и решил использовать mon goose для связи с MongoDB Atlas. Но MongoDB Atlas использует кластеры с базами данных, внутри которых снова есть коллекции. Я не могу найти какую-либо документацию для подключения к указанной c базе данных и коллекции.

Это мой текущий код:

Файл со схемой

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  User: {
    fisrtname: String,
    lastname: String,
    email: String,
    password: String,
  },
  Todos: [
    {
      title: String,
      completed: Boolean,
      id: Schema.Types.ObjectId,
    },
  ],
});

module.exports = mongoose.model('User', userSchema, 'todosCollection');

Файл основного сервера

const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
const dbConfig = require('./database/db');
const app = express();
const PORT = process.env.PORT || 8080;

// Connecting to MongoDB database
mongoose.Promise = global.Promise;
mongoose
  .connect(dbConfig.db, {
    useNewUrlParser: true,
  })
  .then(
    () => console.log('Database Sucsessfully connected!'),
    err => console.error('Could not connect to database: ' + err)
  );

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

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'public', 'index.html'));
});

app.use('/api/todos', require('./routes/api/todos'));

app.listen(PORT, () => console.log(`Server is running on port ${PORT}`));

И функция, которая ищет MongoDB! Это фрагмент из другого файла, но остальное не имеет значения для вопроса.

const userSchema = require('../../database/models/User');

router.get('/', (req, res) => {
  userSchema.find((err, data) => {
    if (err) {
      res.staus(500).json({ msg: 'Did not found database data' });
    } else {
      res.json(data);
    }
  });
});

1 Ответ

1 голос
/ 01 мая 2020

После подключения к кластеру Atlas MongoDB вы можете обращаться с ним так же, как с любым другим подключением MongoDB. См. Мой ответ о том, как правильно подключиться к кластеру Atlas: { ссылка }.

Однако у вас, похоже, также есть проблема с запросом данных, но без нее трудно справиться. соответствующий код.

  • Однако в третьем фрагменте вы запрашиваете User - но я думаю, что ваша схема User неверна.
  • Я предлагаю разделить Todos на его собственную схему и экспортировать отдельно для пользователя, то есть:

module.exports = mongoose.model('Todo', todoSchema)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...