Base de dados (m77.db)
Coleções, consultas e dados por utilizador.
m77.db é uma base de dados de documentos sem esquema. As coleções são criadas automaticamente na primeira vez que escreve nelas.
Criar
const task = await m77.db.create('tasks', { title: 'Ship v2', done: false, priority: 2 });
// → { id, title, done, priority, createdAt, updatedAt, ownerId }Ler
const all = await m77.db.list('tasks');
const open = await m77.db.list('tasks', { where: { done: false }, sort: '-priority', limit: 50 });
const one = await m77.db.get('tasks', id); // null if missing
const count = await m77.db.count('tasks', { where: { done: true } });Filtros
where compara campos de forma exata e suporta operadores:
| Operador | Exemplo |
|---|---|
| igual | { status: 'paid' } |
$ne | { status: { $ne: 'draft' } } |
$in | { status: { $in: ['sent', 'paid'] } } |
$gt / $gte / $lt / $lte | { total: { $gte: 100 } } |
$contains | { name: { $contains: 'ann' } } (sem distinguir maiúsculas) |
sort recebe um nome de campo, com - antes para ordem decrescente (predefinição -createdAt). limit vai até 500 e offset serve para paginar.
Atualizar e apagar
await m77.db.update('tasks', id, { done: true }); // shallow merge
await m77.db.replace('tasks', id, { title: 'New' }); // overwrite all fields
await m77.db.remove('tasks', id);Dados por utilizador
Os registos criados enquanto um utilizador tem sessão iniciada recebem um ownerId. Consulte apenas os registos do utilizador atual com mine: true:
const myNotes = await m77.db.list('notes', { mine: true });Os registos com dono só podem ser atualizados ou apagados por esse dono.
Regras de acesso
Cada coleção é pública por predefinição. Restrinja-a coleção a coleção no separador Dados do editor ou deixe a sua app declarar regras num ficheiro m77.config.json:
{ "rules": { "notes": "private", "menu": "readonly", "orders": "auth" } }| Regra | Quem pode ler | Quem pode escrever |
|---|---|---|
public | Qualquer pessoa | Qualquer pessoa |
auth | Utilizadores da app com sessão iniciada | Utilizadores da app com sessão iniciada |
private | Cada utilizador vê apenas os seus registos | Apenas o dono do registo |
readonly | Qualquer pessoa | Apenas você, no separador Dados |
Limites
Registos até 1 MB cada; 50 000 registos por app (contacte-nos se precisar de mais).