NODEJS ORM - KNEX

jsbak·2022년 2월 26일
0
post-thumbnail

knex 공식 문서
Shahed Nasser Knex.js Tutorial For Beginners초보자를 위한 Knex.js 튜토리얼

KNEX 사용

npm install knex pg (또는 원하는 DB)

knex init -> knexfile.js 생성,
dotenv와 .env 파일 작성하는 법, https://velog.io/@public_danuel/process-env-on-node-js

DB.js 파일 작성 - knexfile.js 을 이용해서 사용하는 knex 객체 초기화 및 생성
Application에서 Database에 접근해서 데이터를 가져와야하는 모든 곳에서 DB.js를 사용

knex migration :

knex 마이그레이션 및 시드파일을 사용해서 PG 데이터 베이스에 테이블과 데이터를 마이그레이션 합니다.

루트 디렉터리에서 실행시
npx knex migrate:make initial_setup
db/migrations 아래에 파일 생성 ->디비 스키마 관련
**굳이 DB에 CREATE DDL 문이 있다면 이거 안써도 될거 같음.

npx knex seed:make initial_data
db/seeds 아래에 샘플 시드 파일 생성 -> 마이그레이션을 통해 생성된 Table에 시드 레코드를 삽입?
**역시 마찬가지 직접 insert 해서 dummy data를 db에 넣는다면 필요 없을 듯.

마이그레이션 적용

npx knex migrate:latest

시드 데이터 채우기

npx knex seed:run

이후
config/knexConfig = knexfile.js 설정 파일 위치

const knex = require('knex')(knexConfig/config[process.env.NODE_ENV]);
//config[process.env.NODE_ENV] 라면 그 시작때 환경 변수 설정으로 어떤 DB 설정인지 정하는 부분 인듯.

knex 객체를 가지고
.raw()

.select() 등등을 이제 찾아서 사용하면된다.

예시

----- 이부분이 이제 Route된 callback function (route handler function)에 들어가면 된다.
'users' 라는 테이블의 데이터를 가져와서 보여준다.

knex('users')
  .select({
    id: 'id',
    name: 'name'
  })
  .then((users) => {
    return res.json(users);
  })
  .catch((err) => {
    console.error(err);
    return res.json({success: false, message: 'An error occurred, please try again later.'});
  })

반환 예시 데이터

[
	{
		"id": 1,
		"name": "Hettie Marshall"
	},
	{
		"id": 2,
		"name", "Hester Owens"
	},
	{
		"id": 3,
		"name": "Henry Jackson"
	}
]

참고

https://knexjs.org/#Raw

raw

const result = await conn.raw(query, params);
같이 knex를 Connection.raw() 가 있다면, params에 들어가는게 없을 경우
{} 빈 오브젝트 객체를 반환해주면 binding 숫자가 맞지 않는 에러를 피할 수 있다.

https://blog.shahednasser.com/knex-js-tutorial-for-beginners/

profile
끄적끄적 쓰는곳

0개의 댓글