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):
и если я попытаюсь отправить то же самое письмо снова, он бросает мне ошибку API, что письмо уже используется с ошибкой 422, но данные не сохраняются и база данных (practicedb
) не создаются:
кроме того, что такое OPTIONS
запрос, который появляется в терминале? Я только сделал попытку POST
. Наконец, это OPTIONS
почему ERROR
вход в API-сервер не входит в хронологическом порядке?
редактировать
1 ответов
вы используете неправильную команду оболочки Mongo:db
покажет только текущую базу данных (test
), но если вы хотите увидеть список всех баз данных, вы должны использовать show dbs
.
если вы хотите переключить базы данных:
use practicedb
и, если вы хотите увидеть коллекции в текущей базе данных:
show collections