반응형
제목이 참 힘드네요...
데이터는 적당히 입력이 되었다고 하면, Node(Express)를 통해서 데이터를 넘겨주는 서버를 만들어보겠습니다.
1 .env 파일
CockroachDB연결정보는 사이트에서 제공하는 connection string을 그대로 붙이는게 편리합니다. 비밀번호도 찾아서 잘 넣어주시구요.
PORT=3000
NODE_ENV='development'
SECRET=mysecretkeytest
COCKROACHDB_CONNECT_URL='postgresql://<유저아이디>:<비밀번호>@wind-raccoon-4725.8nk.cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full'
2. postRoute.js
Connection String에 정의된대로 연결하니 오히려 더 깔끔한 것 같네요.
import express from 'express';
import pg from 'pg';
import dotenv from 'dotenv';
import bodyParser from 'body-parser'
dotenv.config();
const { COCKROACHDB_CONNECT_URL } = process.env;
const router = express.Router();
router.use(express.json());
const client = new pg.Client(COCKROACHDB_CONNECT_URL);
client.connect(err => {
if (err) {
console.error('connection error', err.stack)
} else {
console.log('success!')
}
});
// 전체 리스트 읽기
router.get('/', (req, res) => {
// res.send('hello');
const query = new pg.Query("SELECT * FROM MEMO_POST");
client.query(query);
var rows = [];
/**
* row에서 데이터 가져오고 end에서 검색할 때 발생한 각종 정보, error는 오류 발생시
*/
query.on("row",row=>{
rows.push(row);
});
query.on('end', () => {
console.log(rows);
console.log('query done')
res.send(rows);
res.status(200).end();
});
query.on('error', err => {
console.error(err.stack)
});
});
3. index.js
구동을 위해 index.js의 소스코드도 올려둡니다.
import express from 'express';
import session from 'express-session';
import cookieParser from 'cookie-parser';
import dotenv from 'dotenv';
import cors from 'cors';
// import mongoose from 'mongoose';
// import auth from './routes/auth.js';
import postRoute from './routes/postRoute.js';
dotenv.config();
const app = express();
const { PORT, SECRET } = process.env;
app.set('port', PORT || 3000);
app.use(express.json());
app.use(express.static('public'));
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(SECRET));
app.use(session({
resave: false,
saveUninitialized: false,
secret: SECRET,
cookie: {
httpOnly: true,
secure: false
}
}));
app.use(cors()); // 이걸로는 잘 안됨
app.all('/*', function(req, res, next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
})
app.use('/', postRoute);
app.listen(app.get('port'), ()=> {
console.log(`http://localhost:${app.get('port')} 번 포트에서 서버 실행 중..`);
});
결과가 잘 나오네요^^
반응형
'Programming > Vue' 카테고리의 다른 글
Vuepress2 정적 사이트 생성기 시작하기 (0) | 2023.07.04 |
---|---|
서버리스 앱만들기 - 3.Vue.js 앱 Netlify에 배포하기 (0) | 2023.05.20 |
서버리스 앱만들기 - 1. CockroachDB Serverless 데이터베이스 시작하기 (0) | 2023.05.18 |
Vue todolist 만들기 - 8. Backend 연동을 위해 Frontend 수정하기 (0) | 2023.05.05 |
Vue todolist 만들기 - 7. Express로 Backend 구성하기 (0) | 2023.05.05 |