データベース(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 | 送信者、受信者、アプリの管理者 | メッセージの変更や削除は送信者だけ |
上限
レコード1件あたり64 KBまでです(ファイルは代わりに b77.storage.upload で保存します)。アプリ1つあたりのレコード数はプランによって異なり、Freeは2,000件、Starterは20,000件、Plusは50,000件、Proは100,000件、Eliteは200,000件です。