Sequelize Adapter
리소스
설정
설치
npm install @auth/sequelize-adapter sequelize
환경 변수
DATABASE_URL=postgres://postgres:adminadmin@0.0.0.0:5432/db
설정
⚠️
여러분은 선택한 데이터베이스의 드라이버를 수동으로 설치해야 합니다.
./auth.ts
import NextAuth from "next-auth"
import SequelizeAdapter from "@auth/sequelize-adapter"
import { Sequelize } from "sequelize"
const sequelize = new Sequelize(process.env.DATABASE_URL)
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [],
adapter: SequelizeAdapter(sequelize),
})
스키마
기본적으로 Sequelize 어댑터는 데이터베이스에 테이블을 자동으로 생성하지 않습니다. 프로덕션 환경에서는 마이그레이션을 통해 데이터베이스에 필요한 테이블을 생성하는 것이 가장 좋은 방법입니다. 개발 환경에서는 sequelize.sync()
를 호출하여 Sequelize가 필요한 테이블, 외래 키, 인덱스를 생성하도록 할 수 있습니다.
이 스키마는 Sequelize에서 사용하도록 조정되었으며, 주요 스키마를 기반으로 합니다.
./auth.ts
import NextAuth from "next-auth"
import SequelizeAdapter from "@auth/sequelize-adapter"
import Sequelize from "sequelize"
const sequelize = new Sequelize("sqlite::memory:")
const adapter = SequelizeAdapter(sequelize)
// 프로덕션 환경에서는 sync() 호출을 권장하지 않음
sequelize.sync()
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter,
})
Advanced usage
커스텀 모델 사용하기
Sequelize 모델은 다음과 같이 커스터마이징할 수 있습니다:
./auth.ts
import NextAuth from "next-auth"
import SequelizeAdapter, { models } from "@auth/sequelize-adapter"
import Sequelize, { DataTypes } from "sequelize"
const sequelize = new Sequelize("sqlite::memory:")
export const { handlers, auth, signIn, signOut } = NextAuth({
// https://authjs.dev/reference/providers/
providers: [],
adapter: SequelizeAdapter(sequelize, {
models: {
User: sequelize.define("user", {
...models.User,
phoneNumber: DataTypes.STRING,
}),
},
}),
})