백엔드와 SDK

데이터베이스 (b77.db)

컬렉션, 쿼리, 사용자별 데이터를 다뤄요.

b77.db는 스키마 없는 문서 데이터베이스예요. 컬렉션은 처음 데이터를 쓸 때 자동으로 만들어져요.

만들기

const task = await b77.db.create('tasks', { title: 'Ship v2', done: false, priority: 2 });
// → { id, title, done, priority, createdAt, updatedAt, ownerId }

읽기

const all = await b77.db.list('tasks');
const open = await b77.db.list('tasks', { where: { done: false }, sort: '-priority', limit: 50 });
const one = await b77.db.get('tasks', id);            // null if missing
const count = await b77.db.count('tasks', { where: { done: true } });

필터

where는 필드가 정확히 일치하는 레코드를 찾고, 연산자도 지원해요.

연산자예시
같음{ status: 'paid' }
$ne{ status: { $ne: 'draft' } }
$in{ status: { $in: ['sent', 'paid'] } }
$gt / $gte / $lt / $lte{ total: { $gte: 100 } }
$contains{ name: { $contains: 'ann' } } (대소문자 구분 없음)

sort에는 필드 이름을 넣고, 내림차순은 앞에 -를 붙여요 (기본값 -createdAt). limit은 최대 500이고, offset으로 페이지를 나눠요.

수정과 삭제

await b77.db.update('tasks', id, { done: true });   // shallow merge
await b77.db.replace('tasks', id, { title: 'New' }); // overwrite all fields
await b77.db.remove('tasks', id);

사용자별 데이터

사용자가 로그인한 상태에서 만든 레코드에는 ownerId가 붙어요. mine: true를 쓰면 현재 사용자의 레코드만 조회해요.

const myNotes = await b77.db.list('notes', { mine: true });

소유자가 있는 레코드는 그 소유자만 수정하거나 삭제할 수 있어요.

접근 규칙

모든 컬렉션에는 서버에서 확인하는 접근 규칙이 있어요. 규칙이 없는 컬렉션은 이름에 따라 기본값이 정해져요. 사람들이 보내는 것(orders, bookings, messages…)은 submit, 내가 공개하는 콘텐츠(products, menu, posts…)는 readonly, leaderboard와 guestbook은 append, 나머지는 모두 private이에요. 규칙은 빌더의 데이터 탭에서 컬렉션마다 바꾸거나, 앱이 b77.config.json 파일에 직접 선언하게 할 수 있어요.

{ "rules": { "notes": "private", "menu": "readonly", "orders": "auth" } }
규칙읽을 수 있는 사람쓸 수 있는 사람
public누구나누구나
auth로그인한 앱 사용자로그인한 앱 사용자
private각 사용자가 자기 레코드만레코드 소유자만
readonly누구나데이터 탭에서 나만
submit나와 앱 관리자만누구나 항목을 보낼 수 있음
append누구나누구나 추가할 수 있고, 수정과 삭제는 각자 자기 것만
members구독 중인 로그인 사용자구독 중인 로그인 사용자
members-private각 구독자가 자기 레코드만레코드 소유자만
team나와 내가 관리자로 지정한 사용자나와 내가 관리자로 지정한 사용자
direct보낸 사람, 받는 사람, 앱 관리자메시지 수정과 삭제는 보낸 사람만

한도

레코드 하나는 최대 64 KB예요 (파일은 b77.storage.upload로 저장하세요). 앱당 레코드 수는 요금제에 따라 달라요. Free 2,000개, Starter 20,000개, Plus 50,000개, Pro 100,000개, Elite 200,000개예요.