[바미] Typescript-restful-starter - services에 있는 코드와 repository에 있는 코드의 차이점에 대해 알아보자.
·
프로그래밍(Web)/Javascript(TS,Node)
이 부분에 대해 궁금하여 물어본 내용을 답변을 받아 적었습니다. Sample.repository.ts import { EntityRepository, Repository } from "typeorm"; import { Sample } from "../models"; @EntityRepository(Sample) export class SampleRepository extends Repository { public bulkCreate(Samples: Sample[]): Promise { return this.manager.createQueryBuilder().insert().into(Sample).values(Samples).execute(); } public async removeById(id: numb..
[바미] Typescript-restful-starter - 이메일을 json데이터에 입력하여 생성하기
·
프로그래밍(Web)/Javascript(TS,Node)
코드 수정 Create 될 때 정적으로 이메일 데이터를 받는 것을 동적으로 이메일을 json데이터에 입력하여 생성할 수 있도록 수정함. 코드 수정 전 Sample.schemas.ts import { number, object, string } from "joi"; /* 구조 정의 */ export const createSample = object().keys({ text: string().required(), }); export const updateSample = object().keys({ id: number().required(), text: string().required(), }); export const deleteSample = object().keys({ id: number().requir..
[바미] Typescript-restful-starter 코드 분석해보기 !
·
프로그래밍(Web)/Javascript(TS,Node)
본 글은 github.com/camesine/Typescript-restful-starter camesine/Typescript-restful-starter Node.js + ExpressJS + Joi + Typeorm + Typescript + JWT + ES2015 + Clustering + Tslint + Mocha + Chai - camesine/Typescript-restful-starter github.com 의 코드를 가지고 TypeScript를 처음 공부 하였을 때 정리 해놓은 것을 써놓은 글입니다. 혹여나 코드의 해석이 틀릴 수 있으므로, 유의 하시기 바랍니다. app/controllers 코드 분석 ContController.ts req, res 설정 부분 import * as exp..
[바미] Go - Websocket
·
프로그래밍(Web)/Golang
WebSocket? Web에서 할 수 있는 Socket 프로그래밍이라는 뜻인데, HTML5에 들어간 표준에 하나로, 지난번에 다루었던 Event소스라는 것과 더불어서 동적인 웹을 만드는데 사용되는 도구입니다. 이것을 사용하여 채팅 서비스 앱을 구현 해봅시다! 우선 EventSource에서 불필요한 부분들을 지운 코드를 가져왔습니다. main.go package main import ( "net/http" "github.com/gorilla/pat" "github.com/urfave/negroni" ) func main() { mux := pat.New() n := negroni.Classic() n.UseHandler(mux) http.ListenAndServe(":3000", n) } 기본 mux에 기..
[바미] Go - PostgreDB(2) feat. 드디어 풀린 에러
·
프로그래밍(Web)/Golang
위와 같은 에러는 main함수의 os.Getenv()에서 발생하여 m := app.MakeHandler("발급받은 Postgre URL") 이런식으로 해결했습니다. 그 후 git add, commit, push 후 heroku -logs --tail을 사용하여 정상적으로 작동하는지 로그를 확인해 줍니다. postgre에서는 '?'를 지원하지 않는다는 의미인데, postgre ?가 아닌 $와 숫자를 사용해야 합니다. func (s *pqHandler) GetTodos(sessionId string) []*Todo { todos := []*Todo{} rows, err := s.db.Query("SELECT id, name, completed, createdAt FROM todos sessionId=$1",..
[바미] Go - PostgreDB
·
프로그래밍(Web)/Golang
지금까지 Todos를 Heroku에 배포를 했습니다. heroku에서는 dyno라는 컨테이너를 쓰는데, 이것이 statelss라 fileDB를 사용할 수 없게 되어 실제 DB를 사용해야 하는데 heroku가 클라우드 서비스이기 때문에 PostgreDB라는 DB서비스를 10000레코드까지만 무료로 제공하고 있습니다. 우선 커맨드 창을 띄운 뒤에 Heroku 로그인을 해줍니다. 그 후 해당 명령어를 입력합니다. heroku addons:create heroku-postgresql:hobby-dev 이렇게 하면 현재 앱에 postgresqlDB가 추가가 되고, 티어는 hobby-dev인 무료티어로 추가가 됩니다. Created postgresql-round-47123 as DATABASE_URL 라는 의미는 ..
[바미] Go - todos 배포
·
프로그래밍(Web)/Golang
우선 기존에 만들었었던 todos 파일을 사용자 계정 폴더에 빼내어 줍니다. 여기에 Go 모듈을 만들어 줍니다. 명령 프롬프트 창을 키고 방금 옮겼던 폴더로 이동 합니다. 그 다음 go mod init changbeomWeb/todos를 입력해 줍니다. go mod init하면 mod가 initialize하게 되는데 그 때 뒷부분에 만들려는 모듈의 이름을 적어준다. 되도록 겹치지 않게 해줍니다. 이렇게 하면 MOD파일이 생성된 것을 확인할 수 있습니다. 그 후 git init를 사용하여 git을 initialize하게 해줍니다. 그 후 해당 폴더를 열어서 import 부분들을 mod init했던 부분과 맞추어 수정해 줍니다. app/app_test.go import ( "encoding/json" "fm..
[바미] Go - HEROKU를 사용한 웹 호스팅
·
프로그래밍(Web)/Golang
HEROKU를 들어가 회원가입 후 로그인을 해줍니다. 그 후 Documentation에 들어가서 Get Started를 클릭 후 Go언어를 선택해 줍니다. 그러면 Go언어를 올릴 수 있는 튜토리얼이 진행이 되는데, Start를 클릭 합니다. 그러면 설치하는 화면이 나오는데, Git을 먼저 설치 한 뒤, 각 운영체제에 맞게 HEROKU Tool을 설치해 줍니다. 설치가 완료 되었다면, 명령프롬프트 창을 열고, heroku login 을 입력해주면 이러한 문구가 뜨는데 아무키나 눌러 줍니다. 그러면 새 창이 뜨면서 로그인 창이 뜨게 되는데요. 그 후 로그인을 하고 브라우저를 닫아주면 로그인이 완료 되어 있는 것을 확인 할 수 있습니다. 다음 단계로 넘어가 봅시다. 그러면 App을 Prepare 하는 페이지가..
[바미] Go - 세션별 데이터 저장
·
프로그래밍(Web)/Golang
다른 아이디로 로그인해도 똑같은 Todo가 나오는게 문제 였었는데 각 세션별로 따로 데이터를 저장해서 각 세션에 해당하는 데이터만 보여주도록 수정 할 것입니다. 먼저 model/sqliteHandler.go에 세션 아이디도 저장할 수 있도록 CREATE TABLE 쿼리문을 수정 해줍니다. func (s *sqliteHandler) GetTodos(sessionId string) []*Todo { todos := []*Todo{} rows, err := s.db.Query("SELECT id, name, completed, createdAt FROM todos WHERE sessionId=?", sessionId) if err != nil { panic(err) } defer rows.Close() for..
Bami