내 ReactJS + Redux 프로젝트에서 MongoDB/Webpack/NodeJS Express를 설정했습니다.ReactJS + Redux : MongoDB가 정확한 API 요청을하더라도 데이터베이스에 데이터를 저장하지 않는 이유는 무엇입니까?
나는 활동 작성자로부터 redux로 API 호출을하고 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 컨트롤러는 같은 설정 :
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')
}
구성 :
module.exports = {
'database': 'mongodb://localhost/practicedb',
'port': process.env.PORT || 3000,
'secret': 'dogcat',
}
지금까지 프로젝트에는 전자 메일 주소를 받아들이는 입력 텍스트 필드 만 있습니다. 전자 메일이 이미 등록 된 경우 API는 That email address is already in use.
오류를 반환해야합니다.
그래서 나는 문제가 무엇인지보기 위해 콘솔 로그를 시도하고 내가 POST 요청을 제출 처음, 다음 (API 콘솔 로그를 보여주는 터미널) 기록합니다
그리고 경우를 나는 이메일이 422 오류와 함께 이미 사용중인 것을 나에게 API의 오류가 발생, 다시 같은 이메일을 제출하려고, 아직 데이터가 저장되지 않는 데이터베이스 (practicedb
) 생성되지는 결코 :
또한 터미널에 표시되는 OPTIONS
요청은 무엇입니까? 나는 POST
으로 만 시도했다. 마지막으로, OPTIONS
ERROR
로그인 API 서버가 연대순으로 로그인하지 않는 이유는 무엇입니까?
편집
@Jacob 야 야곱을! 나를 돌봐주는 마음. 감사합니다 –
데이터베이스가 실행 중입니까? 다른 위치에 2 개의 데이터베이스 인스턴스가 있습니까? – sailens
@sailens 다시 등록하고 터미널을 통해 내 데이터베이스를 검사했지만, 저장 될 새 레지스터 데이터를 정의한'practicedb '보다는'test' 데이터베이스 만 보여줍니다. 그리고 나는'test' 데이터베이스를 만들지 않았습니다. 여러 데이터베이스 인스턴스가 실행 중인지 확인하는 방법이 있습니까? –