elysia의 hook은 기본적으로 캡슐링 되어있다.
→ 즉 new Elysia로 생성한 인스턴스 내부에서만 값들을 받아올 수 있다.
as
scoped
hook의 실제 용도처럼 use로 플러그인 형태로 가져와서 쓰려면 스코프를 넓게 가져가야됨
export const getUserId = new Elysia()
.use(userService)
.guard({
as: "scoped",
isSignIn: true,
cookie: "session",
})
.resolve({ as: "scoped" }, ({ store: { session }, cookie: { token } }) => ({
username: session[token.value],
}));
위 코드 처럼 getUserId라는 훅을 쓸 떄, username을 훅을 사용하는 쪽에서 가져오려면 as: “scoped”
를 넣어줘야됨
만약 훅 안에 훅을 쓰는 것 같이 여러겹으로 쌓여있는 상태에서 접근하려면 as: “global”
을 넣어줘야됨
export const getUserId = new Elysia()
.use(userService)
.guard({
isSignIn: true,
cookie: "session",
})
.resolve(({ store: { session }, cookie: { token } }) => ({
username: session[token.value],
}))
.as("plugin");
as를 각각의 내부에 쓰기 힘들 떈 한번에 as(”plugin”)
으로 변경할 수 있음