knex 공식 문서
Shahed Nasser Knex.js Tutorial For Beginners초보자를 위한 Knex.js 튜토리얼
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 마이그레이션 및 시드파일을 사용해서 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"
}
]
const result = await conn.raw(query, params);
같이 knex를 Connection.raw() 가 있다면, params에 들어가는게 없을 경우
{}
빈 오브젝트 객체를 반환해주면 binding 숫자가 맞지 않는 에러를 피할 수 있다.
https://blog.shahednasser.com/knex-js-tutorial-for-beginners/