목록전체 글 (306)
나의 발자취
npm init -ynpm i express nodemon sqlite3 sequelize sequelize-cli npx sequelize init * npx: node package executor로, 패키지를 실행할 때의 명령어~ 위 명령어 실행 후 app.js 파일 생성, 노드몬 정보 맞추기 그러면 아래와 같이 파일들이 막 생긴당 config.json을 열어서 보면 기본 dialect가 "mysql"인것을 볼 수 있다. development, test, production 안에 내용을 다 지운다.dev: 개발할때의 환경이라 오류가 나도 문제가 없다.test: 테스터들의 환경production: 실제 배포할때의 환경 그리고 아래와 같이 입력해준다. index.jsmodels > inde..
ORM이란?Object-Relational Mapping 대표적인 ORM으로는 Python의 Django, SQLAlchemy가 있다.JS/Node.js에는 Sequelize, TypeORM, Prisma 가 있고Java: JPA(대표적), HibernateGo: GoORMRuby: ActiveRecord Sequelize ORM Framework 을 사용하면 SQL을 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있다고 한다. 이제까지 코드 안에 쿼리 짜고 그러느라 번거롭고 가독성도 좋지는 않았는데, 이러한 문제점을 해결할 수 있다. 주요 기능모델 정의 : 테이블 == 모델쿼리 빌딩: find, create, update, destroy관계 설정: 1:1, 1:N, JOIN 쿼리 지원트랜젝션 ..
일단 냅다 올리고 시작type Query { // 예약어 hello: String getPost(id: ID!): Post}type Post { // 커스텀 자료형 id: ID! title: String! content: String!}type Mutation { // 예약어 createPost(input: PostInput): Post updatePost(id: ID!, input: PostInput) : Post deletePost(id: ID!)}input PostInput { title: String! content: String!}// 기본 타입// Int: 32bit 정수형// Float: 부동 소수점 숫자// String// Boolea..
일단, .gitignore 파일을 자동생성하는 사이트를 가서 파일 생성을 한다.https://www.toptal.com/developers/gitignore gitignore.ioCreate useful .gitignore files for your projectwww.toptal.com git init 폴더가 있는 경로에다가 .gitignore 파일을 생성하여 저장하고, (아무 작업을 하지 않은 프로젝트인 경우) 원격 레포지토리에 커밋을 하면 되지만, 만약에 위와 같이 최초부터 .gitignore 파일을 하지 않은 경우엔 이미 local에 많은 캐시 데이터들이 생성되어 깃허브 레포지토리에 커밋이 되어있을 것이다! 그래서, 단순히 이 파일을 커밋한다고 해서 캐시들이 자동으로 사라지는 게 아니다.따라서,..
GraphQL의 특징 단일 엔드포인트필요한 데이터만 요청오버패칭 언더페칭 문제 해결배치요청REST api를 쓰게 되면, 한 화면에 포스트와 댓글을 다 보여줘야하므로GET http://localhost:3000/posts/2 와,GET http://localhost:3000/posts/2/comments 두 개를 모두 요청해야한다. 하지만 GraphQL의 경우,{ getPosts(ID:2) { titlecontentauth}getcomments(ID:2){content}로 요청이 가능하다는 것 ! 버전관리 필요 없음실시간 데이터처리스키마 정의type Query {hello: StringgetPosts(id: ID) : Post 프로젝트 시작 1. 프로젝트 준비: 경로를 열고, npm init -y 실행2..
1. create_sql에 새로운 DB(comments)를 생성해준다. CREATE TABLE IF NOT EXISTS comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT NOT NULL, postId INTEGER, FOREIGN KEY(postId) REFERENCES posts(id) ); 2. DB 생성된 것 확인 3. 코드 구현// 특정 포스트 댓글 추가app.post("/posts/:id/comments", (req, res) => { const { content } = req.body; // req.body.content -> content const postId = req.params.id; const stmt = db.pr..
npm i better-sqlite3 패키지를 설치해준다. 기존의 RESTapi와 비슷하면서도 다르다. 다른 점 위주로 작성해보겠다.일단 당연히 sqlite3를 이제 쓰지 않을 것이기 때문에 해당 부분은 Database 변수로 선언해주는 부분이 다르다.그리고 const app 부분부터 create_sql 쿼리부분까지는 내용이 같으니 복붙해준다. 아래에 db.exec(create_sql); 을 해준다. GET /posts - 게시글 목록 가져오기그리고 그 아래에 1번 GET 기능을 아래 부분만 복붙해준다. 그리고 코드 작성// 1. GET /posts 게시글 목록app.get("/posts", (req, res) => { const page = req.query.page ? parseInt(req.q..
POST /posts - 게시글 쓰기아래와 같이 api 기본 틀을 설계해준다. (깃허브에 커밋 이력 참고)https://github.com/est22/backend/commit/5056afee59d19a4ff809b78190a2904ee10f17d8) 1. curl -X POST -H "Content-Type: application/json" -d '{"title":"Test1", "content":"test content", "author":"lia"}' http://localhost:3000/posts를 입력하고 엔터를 치면, 아래와 같이 line 73에 입력한 대로 결과가 나온다. 2. curl http://localhost:3000/posts로 GET 요청을 하면, 현재 존재하는 데이터들을 jso..