ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. React와 Express, MongoDB 연동하기 (1) Retrieve
    2018~2019/React.js 2018. 10. 2. 15:47

    1. mongodb 설치


    1-1) https://www.mongodb.com/ 접속 후 mongodb 설치

    1-2) mongoose 설치 : npm i -g mongoose


    2. schemas 폴더 생성


    2-1) index.js 파일 생성

    const mongoose = require('mongoose');

    const { MONGO_ID, MONGO_PASSWORD, NODE_ENV } = process.env;
    const MONGO_URL = `mongodb://${MONGO_ID}:${MONGO_PASSWORD}@localhost:27017/admin`;

    module.exports = () => {
    const connect = () => {
    if (NODE_ENV !== 'production') {
    mongoose.set('debug', true);
    }
    mongoose.connect(MONGO_URL, {
    dbName: 'reactdb',
    }, (error) => {
    if (error) {
    console.log('몽고디비 연결 에러', error);
    } else {
    console.log('몽고디비 연결 성공');
    }
    });
    };
    connect();

    mongoose.connection.on('error', (error) => {
    console.error('몽고디비 연결 에러', error);
    });
    mongoose.connection.on('disconnected', () => {
    console.error('몽고디비 연결이 끊겼습니다. 연결을 재시도합니다.');
    connect();
    });

    require('./user');
    };


    2-2) user.js 파일 생성

    const mongoose = require('mongoose');

    const { Schema } = mongoose;
    const userSchema = new Schema({
    name: {
    type: String,
    required: true,
    unique: true,
    },
    age: {
    type: Number,
    required: true,
    },
    });

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


    3. 소스파일 수정

    3-1) react-client/src/App.js

    import React, { Component } from 'react';
    import './App.css';

    class App extends Component {
    state = {users: []}

    componentDidMount() {
    fetch('/users')
    .then(res => res.json())
    .then(users => this.setState({ users }));
    }

    render() {
    return (
    <div className="App">
    <h1>Users</h1>
    {this.state.users.map(user =>
    <div key={user._id}>{user.name} {user.age}</div>
    )}
    </div>
    );
    }
    }

    export default App;


    3-2) react-server/app.js

    const connect = require('./schemas');

    const app = express();
    connect();


    3-3) react-server/routes/user.js

    import express from 'express';
    import User from '../schemas/user';

    const router = express.Router();

    router.get('/', async (req, res, next) => {
        const users = await User.find({});
        res.json(users);
    });

    module.exports = router;


    4. 연동확인

    - npm start


    '2018~2019 > React.js' 카테고리의 다른 글

    3. React와 Express, MongoDB 연동하기 (2) Create  (0) 2018.10.04
    now.sh 느릴 때  (0) 2018.10.02
    1. React와 Node(Express) 연동하기  (1) 2018.10.02
    babel 설치  (0) 2018.08.17
    리액트 정리하기  (0) 2018.07.06
Designed by Tistory.