Drizzle 쿼리 μœ ν‹Έλ¦¬ν‹°

$count

db.$count()λŠ” count(*)λ₯Ό νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” μœ ν‹Έλ¦¬ν‹° λž˜νΌμž…λ‹ˆλ‹€. 이 μ—°μ‚°μžλŠ” λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜κ±°λ‚˜ μ„œλΈŒμΏΌλ¦¬λ‘œ ν™œμš©ν•  수 μžˆμ–΄ 맀우 μœ μ—°ν•©λ‹ˆλ‹€. 더 μžμ„Έν•œ λ‚΄μš©μ€ GitHub ν† λ‘ μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

const count = await db.$count(users);
//    ^? number

const count = await db.$count(users, eq(users.name, "Dan")); // 필터와 ν•¨κ»˜ μ‚¬μš© κ°€λŠ₯
select count(*) from "users";
select count(*) from "users" where "name" = 'Dan';

이 κΈ°λŠ₯은 μ„œλΈŒμΏΌλ¦¬μ—μ„œ 특히 μœ μš©ν•©λ‹ˆλ‹€:

const users = await db.select({
  ...users,
  postsCount: db.$count(posts, eq(posts.authorId, users.id)),
}).from(users);

κ΄€κ³„ν˜• 쿼리와 ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 예제:

const users = await db.query.users.findMany({
  extras: {
    postsCount: db.$count(posts, eq(posts.authorId, users.id)),
  },
});