글

라벨이 Query인 게시물 표시

GCP BigQuery connection(DBMS)

이미지
사진1) Big Query화면 구글 클라우드에서 Big Query화면에 들어가서 Add를 선책합니다. 사진2) 외부연결 이번에는 GCP의 SQL(My-SQL)에 접속하는것이 목적이기 때문에 'connections ~ '을 선택한다. 사진3) 외부연결 설정 사진4) 연결할 DB확인 사진5) 연결설정 완료 사진 4번에서 해당 DBMS의 'connection name'을 확인하고 사진5번에 작성을 마무리 합니다. 사진6) 연결 완료 사진7) 쿼리 실행 사진8) 쿼리 실행중 에러 사진6번과 7번에서 실행해도 사진8번과 같이 에러가 발생되는 경우가 있습니다. 에러의 원인은 해당 DBMS에서 연결도중에 연결을 끊어버렸다는 것입니다. 하나의 해결책으로 해당 Big Query가 DBMS에 접근할 권한이 없는 것입니다. 사진9) 서비스 계정 ID 확인 사진10) IAM계정 추가 사진11) 서비스 계정 등록 사진12) Cloud SQL Client선택 해당 Big Query의 service account ID(사진 9)를 확인하고 IAM계정을 추가합니다. 권한은 'Cloud SQL Client'(사진12)으로 추가합니다. 사진13) 쿼리 실행 완료 제대로 동작된다면 사진 13처럼 쿼리를 입력하고 정상적으로 데이터를 불러오는 것을 알수 있습니다. 

NestJS Raw SQL문을 TypeORM에서 사용하기(typeorm@0.3.0 version이후)

 기존에는 'getManager().query('[sql문]')'을 작성해서 DB에서 데이터를 받아왔습니다. 하지만 0.3.0버전 이후 getManager가 Deprecated되서 최신버전의 typeorm에서 다른방법으로 NestJS에서 쿼리문을 사용할 방법을 찾았습니다. // src/users/users.service.ts import { Injectable } from '@nestjs/common' ; import { InjectDataSource , InjectRepository } from '@nestjs/typeorm' ; import { Repository , DataSource } from 'typeorm' ; // DataSource를 사용 import { UserEntity } from './entity/user.entity' ; @ Injectable () export class UsersService { constructor ( @ InjectRepository ( UserEntity ) private readonly userEntity : Repository < UserEntity >, // DataSource를 해당 서비스에 주입한다. @ InjectDataSource () private dataSource : DataSource , ){} async getAllUsers (){ // dataSource에 쿼리문을 입력하면 바로 DB에서 해당 쿼리문의 결과가 리턴된다. return await this . dataSource . query ( `SELECT * FROM users LIMIT` ) } } 'DataSource'를 이용하여 쿼리문을 작성하면...

NestJS http로 들어오는 파라메타, 쿼리, Body값들에 대해서 Global Validation Pipe 만들기

이미지
 안녕하세요. 이번에는 NestJS에서 클라이언트로 받는 값을 검증하고 변환하는 것을 전체(Global)에 적용하도록 하겠습니다. 일단 해당 npm 모듈을 설치해야 합니다. $ npm i class-validator class-transformer @nestjs/mapped-types copy 설치가 완료된 다음 해당 app의 'useGloblePipes을 설정해 줍니다. app . useGlobalPipes ( new ValidationPipe (), ); /src/main.ts 위 코드를 'const app = await NestFactory.create(AppModule);'아래쪽에 추가를 해 줍니다.   'ValidationPipe는 '@nestjs/common'에서 import할수 있습니다. 이제 Input을 제어하기 위한 dto를 작성하겠습니다. import { IsInt , IsString } from 'class-validator' ; export class CreateAppDto { @ IsString () readonly name : string ; @ IsString () readonly sex : string ; @ IsInt () readonly age : number ; } /src/app.dto.ts @IsString() : 위 데코레이터는 해당 name, sex에 string이 제대로 들어가는지를 확인한다 @IsInt() : 위 데코레이터는 해당 age에 number가 제대로 들어가는지 확인한다. import { Body , Controller , Get , Post } from '@nestjs/common' ; import { AppService } from './app.service' ; import { CreateAppDto } from './appDto...

Nest JS URL에 있는 쿼리(Query) 읽기

이미지
 이번에는 url에 있는 쿼리값을 읽도록 하겠습니다.  @ Get () // @Query()는 url에 있는 쿼리값을 갖고옵니다. findAll (@ Query () paginationQuery ){ // 클라이언트에서 항상 받는 값 2개를 변수로 지정 const { color , cost } = paginationQuery ; return ( `Color : ${ color } , Cost : ${ cost } ` ) }  위와같이 쿼리문을 받을 해당 컨트롤러에 작성을 합니다. '@Query()'에서 해당 쿼리문을 받아 'paginationQuery'에 저장을 합니다. 이후 'color' , 'cost'에 클라이언트로 부터 받은 데이터를 집어넣습니다. 그리고 그대로 해당 'color', 'cost'를 클라이언트 쪽으로 response합니다.    그리고 쿼리문에 무엇이 올지 알면 미리 NestJS에서 객체가 아닌 변수로 받을수가 있습니다. @ Get () // @Query()는 url에 있는 쿼리값을 갖고옵니다. findAll ( // 쿼리문에서 color와 cost가 항상 들어오는 것을 약속 @ Query ( 'color' ) color : string , @ Query ( 'cost' ) cost : string ){ // 클라이언트에서 항상 받는 값 2개를 변수로 지정 return ( `Color : ${ color } , Cost : ${ cost } ` ) }

DB mysql Basic Query - Add, Delete Data from Table, Delete Table

이미지
 OS : Ubuntu Add Record in Table -> INSERT INTO [table name](name : column1, column2, .....)      VALUES(value1, value2, ....);     Delete Record in Table -> DELETE FROM [table name] WHERE [column name] = '[element]'; Delete Table -> DROP TABLE [table name]; Priveous Link

DB mysql Basic Query - CREATE(DB, Table), Add(Column), Delete(DB, Table, Column)

이미지
OS : Ubuntu Start mysql - sudo mysql Shows the current DB - SHOW DATABASES; Create DataBase -> CREATE DATABASE [DB name]; Delete DB -> DROP DATABASE [DB name]; Warning: If you delete the DB, the data will also be deleted. Use the DB -> USE [DB name]; Create Table -> CREATE TABLE [Table name](     [column name] INT NOT NULL AUTO_INCREMENT, -> id is primary number      [column name]  VARCHAR(255) NOT NULL,     PRIMARY KEY( [column name] )     ); INT : integer number NOT NULL : Not allow null AUTO_INCREMENT : id number will increase automatically VARCHAR : You could type string PRIMARY KEY([column name]) : Assign a Primary key Show tables -> SHOW TABLES; Add column in the existed table -> ALTER TABLE [table name]     ADD COLUMN [column name] INT AFTER [existed column name]; -> 'age' is what you want to add ALTER TABLE [table name] : Update table ADD COLUMN : Add column AFTER name : column 'name' is already ...