이번 개인 과제에서는 인증서버(회원정보 및 로그인 관련)는 튜터님의 개인 서버를 이용하지만
letters를 저장할 서버는 따로 등록해서 사용해야한다.
test를 할때에는 프로젝트 내에 json-server를 다운받아서 사용했만
배포를 위해 신규로 프로젝트를 만들었다.
mkdir [디렉토리명]
npm init -y
const jsonServer = require("json-server");
const server = jsonServer.create();
const router = jsonServer.router("db.json");
const middlewares = jsonServer.defaults();
server.use(middlewares);
server.use(router);
server.listen(3000, () => {
console.log("JSON Server is running");
});
{
"scripts": {
"start": "node server.js"
}
}
여기까지하고
추가적으로 개인과제 필수 요구사항에 프로필을 수정하면
자신이 쓴 글에대해 모든 프로필이 새로 수정된 프로필로 바뀌어야 한다는 요구사항이 있다.
그 부분을 react내에서 처리를 하면 되겠지만 개인적으로는 userId를 받아서 서버에서 알아서 수정되는 nickname과 profile img를 바꾸고 싶었다.
그래서 아래와 같이 server.js를 수정하였다.
const jsonServer = require("json-server");
const server = jsonServer.create();
const router = jsonServer.router("db.json");
const middlewares = jsonServer.defaults();
server.use(middlewares);
server.use(jsonServer.bodyParser);
server.patch('/letters/sync-profile/:userId', (req, res) =>{
const userId = req.params.userId;
const body = req.body;
const db = router.db;
const collection = db.get('letters');
const itemsToUpdate = collection.filter({userId}).value();
if(itemsToUpdate.length === 0){
res.status(404).send('현재 아이디로 검색되는 letter가 없습니다.');
return;
}
itemsToUpdate.forEach(item => {
collection.find({id: item.id}).assign(body).write();
});
res.send('업데이트 되었습니다.');
});
server.use(router);
server.listen(3000, () => {
console.log("JSON Server is running");
});
수정된 부분은 server.patch부분인데 이미 default로 url '/letters/:id'
PATCH메소드 가 이미 잡혀있기 때문에 '/letters/sync-profile/:userId'
이런 주소를 사용하게 되었고 이 url로 patch 요청이오면 body에 담긴 데이터를 userid와 같은 글들을 전부 수정하는 식으로 작성하였다.
처음으로 glitch를 사용했는데 정말 독특한 사이트 같고..
사실 좀 별..