Подключение к mongodb - PullRequest
0 голосов
/ 06 ноября 2019

Я новичок в разработке MEAN, я разрабатываю простое приложение, и в качестве первого шага я пытаюсь подключиться к своему mongodb, поэтому я установил node, express, morgan, mongodb, mongoose.

Итак, вот мой код в index.js:

const express = require('express');
const morgan = require('morgan');
const app = express();

const { MongoClient } = require('./database');

// Settings
app.set('port', process.env.PORT || 3000);


// Middlewares
app.use(morgan('dev'));
app.use(express.json());

// Routes


// Starting the server
app.listen(app.get('port'), () => {
    console.log('server on port', app.get('port'));
});

, а затем код в моей базе данных.js:

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://duke:<password>@cluster0-dreyi.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  console.log("horrorrrrrr");
  // perform actions on the collection object
  client.close();
}); 

module.exports = MongoClient;

Я также пробую этот код настраница mongodb для подключения к приложению:

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

Конечно, я меняю пароль на реальный. Пожалуйста, оставьте меня в моем сегодняшнем состоянии, это мой первый раз, когда я касаюсь mongodb, а также полный стек MEAN, и я провел слишком много часов в этом соединении.

Вот ошибка, которую я получаю:

(узел: 5284) DeprecationWarning: текущий механизм обнаружения и мониторинга сервера устарел и будет удален в следующей версии. Чтобы использовать новый механизм обнаружения и мониторинга сервера, передайте опцию {useUnifiedTopology: true} конструктору MongoClient.

EDIT

@ iLiA спасибо за ваш ответ! Я попробовал ваш код и не работает, я покажу вам, как я сделал с реальным паролем:

const url = 'mongodb+srv://duke:password@cluster0-dreyi.mongodb.net/test?retryWrites=true&w=majority';

const mongoose = require('mongoose');
mongoose.connect(url, {
   useNewUrlParser: true,
   useCreateIndex: true,
   useUnifiedTopology: true,
   useFindAndModify: false
})
.then(()=>{
    console.log('congrats, problem solved')
})
.catch((err)=>{
    console.log(`there is not a problem with ${err.message}`);
    process.exit(-1)
})



module.exports = mongoose;

и ошибка: нет проблемы с тайм-аутом выбора сервера после 30000 мсПриложение [nodemon] упало - ожидание изменений файла перед запуском ...

С уважением,

1 Ответ

0 голосов
/ 06 ноября 2019

Я не совсем понимаю, почему вы скачали mongodb и mongoose, но вот решение mongoose

const mongoose = require('mongoose');
mongoose.connect(url, {
   useNewUrlParser: true,
   useCreateIndex: true,
   useUnifiedTopology: true,
   useFindAndModify: false
})
.then(()=>{
    console.log('congrats, problem solved')
})
.catch((err)=>{
    console.log(`there is a problem with ${err.message}`);
    process.exit(-1)
})

РЕДАКТИРОВАТЬ : Кажется, вы забыли внести в белый список свой IPадрес в атласе Монго.

...