【问题标题】:front end react is not sending data to to mongoDB database前端反应没有将数据发送到 mongoDB 数据库
【发布时间】:2019-08-28 08:12:33
【问题描述】:

假设应用程序注册新用户并将新用户信息发送到 MongoDB,但是当我尝试注册用户时,它会引发 500 内部错误的错误。控制台说错误在用户文件中,终端说这是错误,代理错误:无法将请求 /api/users 从 localhost:3000 代理到 https://localhost:5000。 [1] 请参阅https://nodejs.org/api/errors.html#errors_common_system_errors 了解更多信息(EPROTO)。 我已经尝试通过给它一个不同的路径和目标来更改 packet.json 中的代理,但它不起作用。也许我忽略了一些东西。 enter code here

import React, { useReducer } from 'react';
import axios from 'axios';
import AuthContext from './authContext';
import authReducer from './authReducer';
import {
 REGISTER_SUCCESS,
 REGISTER_FAIL,
 USER_LOADED,
 AUTH_ERROR,
 LOGIN_SUCCESS,
 LOGIN_FAIL,
 LOGOUT,
 CLEAR_ERRORS 
 } from '../types';

const AuthState = props => {
//initial state 
const initialState = {
    token: localStorage.getItem('token'),
    isAuthenticated: null,
    user: null,
    loading: true,
    error: null    
};
const [ state, dispatch ] = useReducer(authReducer, initialState);

// load user
const loadUser = () => console.log('load user') ;

// register user
const register = async formData => {
  const config = {
      headers: {
          'Content-Type': 'application/json'
      }
  }
  try {
   const res = await axios.post('api/users', formData, config);
   dispatch({
       type: REGISTER_SUCCESS, 
       payload: res.data 
   });
  } catch (err){
    dispatch({
        type: REGISTER_FAIL, 
        payload: err.response.data.msg
    });

  }
}

// login user
const login = () => console.log('login') ;


//logut
const logout = () => console.log('logout') ;


 // clear errors
 const clearErrors = () => console.log('clearErrors') ;

 return (
    <AuthContext.Provider
    value= {{
       token: state.token,
       isAuthenticated: state.isAuthenticated,
       loading: state.loading,
       user: state.user,
       error: state.error,
       register,
       loadUser,
       login,
       logout,
       clearErrors
    }}>

    {props.children}

    </AuthContext.Provider>
 );
 };
  export default AuthState;

//这是我的带有路由的 server.js 文件

  const express = require('express');
  const connectDB = require('./config/db')

  //connect MongoDB
   connectDB();


   const app = express();

   //init middleware
   app.use(express.json({extended: false}));

   app.get('/', (req, res) => res.json({ msg: 'hello welcome'})
   );

   //define routes 
   app.use('/api/users', require('./routes/users'));
   app.use('/api/auth', require('./routes/auth'));
   app.use('/api/contacts', require('./routes/contacts'))

   const PORT = process.env.PORT || 5000;

   app.listen(PORT, () => console.log(`server is working on ${PORT}`))

//这是mongoDB代码

  const mongoose = require('mongoose');
  const config = require('config');
  const db = config.get('mongoURI');

  const connectDB = async () =>{
  try{ await
    mongoose.connect(db, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false

  });
 console.log('mongo connected..')

 } catch (err){
 console.log(err.message);
 process.exit(1)
  }
 };
 module.exports = connectDB;

// 这是控制台抛出 500 内部错误的用户文件。

      const express = require('express');
      const router = express.Router();
      const bcrypt = require('bcryptjs');
      const jwt = require('jsonwebtoken');
      const config = require('config');
       const { check, validationResult } = require('express-validator');

       const User = require('../models/User')

    // This route  Post request to api/users,
   // description   register a  user,
   // access to public to register an become a user
   router.post('/',  [
   check('name', 'Name is require').not().isEmpty(),
   check('email', 'please include email').isEmail(),
   check('password', 'enter a password with atleast 6 characters'
  ).isLength({min: 6})

  ],
   async (req, res) =>{
     const errors = validationResult(req);
      if(!errors.isEmpty()){
        return res.status(400).json({ errors: errors.array()});
   }
    const { name, email, password } = req.body; 
    try{
         let user = await User.findOne({email});
      if(user){
         return res.status(400).json({msg: 'user already exist'})
     }
      user  = new User({
        name,
        email,
        password
     });
      const salt = await bcrypt.genSalt(10);
      user.password = await bcrypt.hash(password, salt);
      await user.save();

     // object to send in the token
      const payload = {
        user: {
            id: user.id
        }
     }
      jwt.sign(payload, config.get('jwtSecret'), {
        expiresIn: 36000
       }, (err, token) => {
          if(err) throw err;
            res.json({token});

      });

     } catch (err){
       console.log(err.message);
       res.status(500).send('server error')
     }
    });


      module.exports = router;

【问题讨论】:

    标签: javascript reactjs mongodb


    【解决方案1】:

    我发现问题了!!! 我的用户文件中有一个意外标记,表明简单的冒号干扰了代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-08
      • 2021-12-18
      • 2019-08-02
      • 2019-09-05
      • 2019-05-02
      • 1970-01-01
      • 2022-01-15
      • 2019-07-20
      相关资源
      最近更新 更多