Не удалось подключиться к Mongodb из-за зависания сокета Postman

#node.js #reactjs #mongodb #react-native

#node.js #reactjs #mongodb #react-native

Вопрос:

я новичок в программировании. Я подключился к MongoDB Atlas, и мне нужно сохранить один объект, используя POSTMAN.

Но я получаю это сообщение о зависании сокета. Я попробовал все, что было возможно, используя параметры прокси.

Пожалуйста, обратите внимание, что у меня ничего не сохранено в моей новой базе данных. помимо имени пользователя и пароля, я сохраняю dbname как есть. думал, что при подключении он сам создаст базу данных с именем «dbname». не уверен, что и здесь делать.

DB_CONNECT=mongodb srv://username:@cluster0.uxjdg.mongodb.net/?retryWrites=trueamp;w=majority

Вот подробности

Index.js

 const express=require('express');
const app =express();
const mongoose=require('mongoose');
const dotenv=require('dotenv');
const bodyParser=require('body-parser');

dotenv.config();

//Connect to DB
mongoose.connect('process.env.DB_CONNECT',
//{ useUnifiedTopology: true },
{ useNewUrlParser: true },

()=>console.log('connect to db'));

//Middleware
app.use(express.json());

//Import Routes

const authRoute=require('./routes/auth');

//Route Middlewares

app.use('/api/user', authRoute);

app.listen(3000, ()=>console.log('Server up and Running'));

  

Маршрутизатор

 const router=require('express').Router();

const User=require('../model/User');

router.post('/register', async(req, res)=>{

    const user =new User({
        name:req.body.name,
        email:req.body.email,
        password:req.body.password
    });

    try{
     const savedUser=await user.save();
     res.send(savedUser);

    }catch(err){
        res.status(400).send(err);
    }
});



module.exports=router;
  

Схема

 
const mongoose=require('mongoose');

const userSchema =new mongoose.Schema({
  name:{

    type:String,
    required:true,
    min:6,
  },
  email:{

    type:String,
    required:true,
    max:255,
    min:6
  },

  password:{

    type:String,
    required:true,
    max:1024,
    min:6
  },

  date:{

    type:Date,
    default:Date.now
  }

});

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

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

1. Можем ли мы увидеть полный текст ошибки?

2. Джо, это единственное сообщение о зависании сокета. Это когда я сохранил длину содержимого заголовка, в противном случае он выдает синтаксическую ошибку 400. Я проверил код и вставил сюда, мне кажется, все в порядке

3. Ведет ли он себя так же, если обратный вызов не является асинхронным?

4. Джо без асинхронности.это то, что я получаю:

5. Ошибка: отклонен запрос CORS: localhost: 3000 /api /user /register

Ответ №1:

У меня была точно такая же проблема, как у вас, поэтому я подумал, что поделюсь шагами, которые я предпринял для решения этой проблемы:

  • Вернитесь в папку проекта MongoDB
  • Удалите текущий кластер и создайте новый кластер
  • Очевидно, вам придется перенастроить доступ к базе данных.
  • и я не уверен, что это необходимо, но я временно установил для доступа к сети значение «РАЗРЕШИТЬ ВЕСЬ ДОСТУП Из ЛЮБОГО МЕСТА»
  • Повторно подключитесь к вашему кластеру, т. Е. обновите свой URL DB_CONNECT, если вы не используете тот же PW.
  • Также перезапустите свой узел.

Отлично! Я надеюсь, что это поможет. Счастливого кодирования!