ReactJS + Redux: почему MongoDB не сохраняет данные в базу данных даже с правильными запросами API?

у меня есть MongoDB/Webpack/NodeJS Express, настроенный в моем проекте ReactJS + Redux.

Я делаю вызовы API от создателей действий в redux и достигаю сервера API и получаю успешный статус, но данные никогда не сохраняются, и база данных никогда не создается даже при проверке в терминале mongo -> dbs и practicedb база данных, которую я назвал.

в чем может быть проблема? Я что-то упускаю?

любое руководство или понимание буду очень признателен. Спасибо

это моя настройка для API:

import axios from 'axios';
import { browserHistory } from 'react-router';
import cookie from 'react-cookie';
import { AUTH_USER, AUTH_ERROR } from './types';

const API_URL = 'http://localhost:3000/api';

export function errorHandler(dispatch, error, type) {
  let errorMessage = (error.data.error) ? error.data.error : error.data;

   // NOT AUTHENTICATED ERROR
   if(error.status === 401) {
     errorMessage = 'You are not authorized to do this.';
   }

  dispatch({
    type: type,
    payload: errorMessage
  });
}

export function registerUser({ email }) {
  return function(dispatch) {
    axios.post(`${API_URL}/auth/register`, { email })
    .then(response => {
      console.log('THIS IS TESTING PURPOSE')
      console.log(response)
      dispatch({ type: AUTH_USER });
    })
    .catch((error) => {
      errorHandler(dispatch, error.response, AUTH_ERROR)
    });
  }
}

и мой контроллер API настроен как таковой:

"use strict";

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

exports.register = function(req, res, next) {
  const email = req.body.email;
  console.log('ERROR 1')

  if(!email) {
    return res.status(422).send({ error: 'You must enter an email address.'})
    console.log('ERROR 1')
  }

  User.findOne({ email: email }, function(err, existingUser) {
    if(err) { return next(err); }
    console.log('ERROR 2')
    if(existingUser) {
      return res.status(422).send({ error: 'That email address is already in use.'})
    }
    console.log('ERROR 3')
    let user = new User({
      email: email,
    })
    console.log('ERROR 4')
    user.save(function(err, user) {
      if(err) { return next(err); }
      console.log('ERROR 5')
      res.status(201).json({
        user: user,
      })
    })
  })
  console.log('ERROR 6')
}

конфигурация для API:

module.exports = {
  'database': 'mongodb://localhost/practicedb',
  'port': process.env.PORT || 3000,
  'secret': 'dogcat',
}

проект пока только есть текстовое поле ввода, где он принимает адрес электронной почты. Если письмо уже зарегистрировано, API должен вернуть ошибку That email address is already in use. и он делает.

поэтому я попытался войти в консоль, чтобы увидеть, в чем проблема, и в первый раз, когда я отправляю запрос POST, он регистрирует следующее (терминал, показывающий журналы консоли API):

enter image description here

и если я попытаюсь отправить то же самое письмо снова, он бросает мне ошибку API, что письмо уже используется с ошибкой 422, но данные не сохраняются и база данных (practicedb) не создаются:

enter image description here

кроме того, что такое OPTIONS запрос, который появляется в терминале? Я только сделал попытку POST. Наконец, это OPTIONS почему ERROR вход в API-сервер не входит в хронологическом порядке?

редактировать

enter image description here

1 ответов


вы используете неправильную команду оболочки Mongo:db покажет только текущую базу данных (test), но если вы хотите увидеть список всех баз данных, вы должны использовать show dbs.

если вы хотите переключить базы данных:

use practicedb

и, если вы хотите увидеть коллекции в текущей базе данных:

show collections