RISK IT

[TIL12_23.1.20.] [Node] Express 유저회원가입 코드 작성 본문

IT/TIL

[TIL12_23.1.20.] [Node] Express 유저회원가입 코드 작성

nomoremystery 2023. 1. 21. 14:53
반응형

작업 내용

  1. 유저 회원가입

전체 소스코드

require('dotenv').config();

const express = require('express');
const cors = require('cors');
const morgan = require('morgan');
const { DataSource } = require('typeorm');

const mysqlDataSource = new DataSource({
  type: process.env.TYPEORM_CONNECTION,
  host: process.env.TYPEORM_HOST,
  port: process.env.TYPEORM_PORT,
  username: process.env.TYPEORM_USERNAME,
  password: process.env.TYPEORM_PASSWORD,
  database: process.env.TYPEORM_DATABASE,
});

mysqlDataSource
  .initialize()
  .then(() => {
    console.log('Data Source has been initialized!');
  })
  .catch((err) => {
    console.error('Error during Data Source initialization', err);
    mysqlDataSource.destroy();
  });

const app = express();

app.use(cors());
app.use(morgan('dev'));
app.use(express.json());

// health check
app.get('/ping', (req, res) => {
  res.status(200).json({ message: 'pong' });
});

app.post('/users/signup', async (req, res) => {
  const { name, email, password, profileImage } = req.body;

  await mysqlDataSource.query(
    `INSERT INTO users (
      name, 
      email, 
      password, 
      profile_image
    )
      VALUES (
        ?, 
        ?, 
        ?, 
        ?
        );
    `,
    [name, email, password, profileImage]
  );

  res.status(200).json({ message: 'userCreated' });
});

const PORT = process.env.PORT;
const start = async () => {
  try {
    app.listen(PORT, () => console.log(`Server is listening on ${PORT}!!`));
  } catch (err) {
    console.error(err);
  }
};

start();

구문분석

app.post('/users/signup', async (req, res) => {
  const { name, email, password, profileImage } = req.body;

  await mysqlDataSource.query(
    `INSERT INTO users (
      name, 
      email, 
      password, 
      profile_image
    )
      VALUES (
        ?, 
        ?, 
        ?, 
        ?
        );
    `,
    [name, email, password, profileImage]
  );

  res.status(201).json({ message: 'userCreated' });
});

중에서

await mysqlDataSource.query();

qeury - raw SQL 쿼리를 실행시킨다.

    `INSERT INTO users (
      name,
      email,
      password,
      profile_image
    )
      VALUES (
        ?,
        ?,
        ?,
        ?
        );
    `,

위와 같이 raw 쿼리문을 작성한다.

그 밑에

    [name, email, password, profileImage]

구문은 const에서 선언한 요청 값에 대한 변수를 query문에서 실행시키는 역할을 하는 것 같은데, 공식 문서를 찾아도 잘 안나온다.

반응형