Skip to content
Migrating from NextAuth.js v4? Read our migration guide.

EdgeDB Adapter

리소스

설정

설치

npm install edgedb @auth/edgedb-adapter
npm install @edgedb/generate --save-dev

EdgeDB CLI가 설치되어 있는지 확인하세요. 아래 지침을 따르거나 EdgeDB 퀵스타트를 참고하여 EdgeDB CLI를 설치하고 프로젝트를 초기화하세요.

환경 변수

AUTH_EDGEDB_DSN="edgedb://edgedb:p4ssw0rd@10.0.0.1"

설정

./auth.ts
import NextAuth from "next-auth"
import { EdgeDBAdapter } from "@auth/edgedb-adapter"
import { createClient } from "edgedb"
 
const client = createClient({ dsn: process.env.AUTH_EDGEDB_DSN })
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: EdgeDBAdapter(client),
  providers: [],
})

EdgeDB CLI

Linux 또는 macOS

curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh

Windows

iwr https://ps1.edgedb.com -useb | iex

CLI가 설치되었는지 확인하려면 edgedb --version 명령어를 실행하세요. Command not found 오류가 발생하면, 새로운 터미널 창을 열어야 edgedb 명령어를 사용할 수 있습니다.

CLI가 설치되면, 애플리케이션의 루트 디렉토리에서 프로젝트를 초기화하세요. 이 과정에서 여러 프롬프트가 나타납니다.

edgedb project init

이 과정은 EdgeDB 인스턴스를 시작하고 현재 디렉토리와 “링크”합니다. 해당 디렉토리 안에 있는 동안, CLI 명령어와 클라이언트 라이브러리는 추가 설정 없이도 자동으로 링크된 인스턴스에 연결할 수 있습니다.

스키마

dbschema/default.esdl 파일의 자동 생성된 내용을 다음으로 교체하세요:

default.esdl
module default {
    type User {
        property name -> str;
        required property email -> str {
            constraint exclusive;
        }
        property emailVerified -> datetime;
        property image -> str;
        multi link accounts := .<user[is Account];
        multi link sessions := .<user[is Session];
        property createdAt -> datetime {
            default := datetime_current();
        };
    }
 
    type Account {
       required property userId := .user.id;
       required property type -> str;
       required property provider -> str;
       required property providerAccountId -> str {
        constraint exclusive;
       };
       property refresh_token -> str;
       property access_token -> str;
       property expires_at -> int64;
       property token_type -> str;
       property scope -> str;
       property id_token -> str;
       property session_state -> str;
       required link user -> User {
            on target delete delete source;
       };
       property createdAt -> datetime {
            default := datetime_current();
        };
 
       constraint exclusive on ((.provider, .providerAccountId))
    }
 
    type Session {
        required property sessionToken -> str {
            constraint exclusive;
        }
        required property userId := .user.id;
        required property expires -> datetime;
        required link user -> User {
            on target delete delete source;
        };
        property createdAt -> datetime {
            default := datetime_current();
        };
    }
 
    type VerificationToken {
        required property identifier -> str;
        required property token -> str {
            constraint exclusive;
        }
        required property expires -> datetime;
        property createdAt -> datetime {
            default := datetime_current();
        };
 
        constraint exclusive on ((.identifier, .token))
    }
}
 
# 접근 정책 내에서 접근 정책을 적용하는 것을 비활성화합니다.
# 이 동작은 EdgeDB 3.0에서 기본값이 될 예정입니다.
# 참고: https://www.edgedb.com/docs/reference/ddl/access_policies#nonrecursive
using future nonrecursive_access_policies;

마이그레이션

  1. 마이그레이션 생성
edgedb migration create
  1. 마이그레이션 적용
edgedb migrate

EdgeDB 마이그레이션에 대해 더 알아보려면 마이그레이션 문서를 확인하세요.

Generate

npx @edgedb/generate edgeql-js

이 명령어는 쿼리 빌더를 생성합니다. 이를 통해 TypeScript를 사용하여 코드 중심의 방식으로 완전히 타입이 지정된 EdgeQL 쿼리를 작성할 수 있습니다.

const query = e.select(e.User, () => ({
  id: true,
  email: true,
  emailVerified: true,
  name: true,
  image: true,
  filter_single: { email: "johndoe@example.com" },
}))
 
return await query.run(client)

Deploying

EdgeDB 배포

먼저 선호하는 클라우드 제공자에 EdgeDB 인스턴스를 배포하세요:

인스턴스의 DSN 찾기

DSN은 연결 문자열로도 알려져 있습니다. DSN은 edgedb://사용자명:비밀번호@호스트명:포트 형식을 따릅니다. 이에 대한 정확한 지침은 여러분이 배포하는 클라우드 제공자에 따라 다릅니다.

환경 변수 설정하기

.env
AUTH_EDGEDB_DSN=edgedb://johndoe:supersecure@myhost.com:420

마이그레이션 적용

원격 인스턴스에 마이그레이션을 적용하려면 DSN을 사용하세요.

edgedb migrate --dsn <your-instance-dsn>

prebuild 스크립트 설정하기

package.json에 다음 prebuild 스크립트를 추가하세요. 호스팅 제공자가 빌드를 초기화할 때 이 스크립트가 실행되어 쿼리 빌더를 생성합니다. npx @edgedb/generate edgeql-js 명령어는 EDGEDB_DSN 환경 변수의 값을 읽고, 데이터베이스에 연결한 후 호스팅 제공자가 프로젝트 빌드를 시작하기 전에 쿼리 빌더를 생성합니다.

package.json
"scripts": {
  "dev": "next dev",
  "build": "next build",
  "start": "next start",
  "lint": "next lint",
+  "prebuild": "npx @edgedb/generate edgeql-js"
},
Auth.js © Balázs Orbán and Team - 2025