Мангуст не может подключиться (локальный хост)

#node.js #mongodb #express #mongoose #apollo

#node.js #mongodb #экспресс #мангуст #аполлон

Вопрос:

Я пытаюсь подключиться к своей базе данных с помощью мангуста в Apollo-Server-Express. Я создал базу данных в терминале. Я прочитал, что «mongodb://localhost:27017/*имя базы данных *» является строкой uri по умолчанию, которую mongoose.connect принимает в качестве первого аргумента.

Однако console.log(mongoose.connection.readyState) выводит » 2 » — подключение. Я бы ожидал «1», верно? При запросе сервер зависает, и возникает ошибка ServerSelectionError. Я попытался добавить инструкцию mongoose.connect с помощью await (как я видел в учебнике), но затем процесс запуска зависает. Есть ли что-то фундаментальное, чего мне не хватает? Любая помощь будет признательна!!

 const { ApolloServer, gql } = require('apollo-server-express'); const express = require('express'); const mongoose = require('mongoose');  const main = async () =gt; {  const app = express();   const server = new ApolloServer({  typeDefs,  resolvers,  introspection: true,  playground: true,  });   await server.start();   server.applyMiddleware({  app,  });   mongoose.connect('mongodb://localhost:27017/db-name', {  useUnifiedTopology: true,  useNewUrlParser: true,  });   console.log(mongoose.connection.readyState);   console.log('MongoDB connected!!');   app.listen(process.env.PORT || 4000, () =gt; {  console.log(`🚀 Server ready at port ${process.env.PORT || 4000}`);  }); };  main(); 

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

1. Работает ли служба mongod? Возможно, вам потребуется открыть терминал и выполнить команду mongod.

2. и вы уже подтвердили, что у вас работает сам mongodb?

Ответ №1:

Спасибо за ваши комментарии, ребята! Таким образом, проблема была двоякой:

  1. Монгод действительно не бежал. Я понял, что получил код ошибки 100, что означало, что данные каталога/бд не существуют. Я сначала попробовал, $ sudo mkdir -p /data/db но все равно получил ту же ошибку. Что тогда помогло, так это создать каталог в корневом каталоге и запустить mongod с $ mongod --dbpath ~/data/db помощью . Это заставило Монгодба работать.

Но все та же проблема с моим сервером…

  1. Оказалось, что в моем случае uri должен быть mongodb://127.0.0.1:27017/db-name . Если я теперь завершу распечатку статуса подключения к серверу в setTimeout, я получу ожидаемый ответ 1 и смогу выполнять свои запросы!