IT/TIL
[TIL12_23.1.20.] [Node] Express 유저회원가입 코드 작성
nomoremystery
2023. 1. 21. 14:53
반응형
작업 내용
- 유저 회원가입
전체 소스코드
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문에서 실행시키는 역할을 하는 것 같은데, 공식 문서를 찾아도 잘 안나온다.
반응형