Documentação
Introdução
sorla instance
└── databases app.useDb('shop'), app.createDb('archive')
└── collections app.db.createCollection('products')
└── documents app.db.products.insertOne({ … })
Uma instância de sorla comporta quantos bancos você quiser; um deles fica selecionado e acessível
como app.db. Um banco contém coleções, e as coleções contêm documentos. Tudo vive na memória
enquanto a instância existir.
A instância sorla
const app = new sorla();
| Método | Retorna | Descrição |
|---|---|---|
useDb(name) |
void |
Seleciona um banco, criando-o quando ele não existe |
createDb(name) |
number | false |
Cria um banco sem selecioná-lo; false quando o nome já existe |
dbExists(name) |
boolean |
|
listDatabases() |
string[] |
Nomes, na ordem de criação |
countDb() |
number |
|
dropDb(name) |
boolean |
Remove um banco e tudo o que há nele; se ele estava selecionado, app.db passa a ser null |
db |
Database | null |
O banco selecionado |
app.useDb('shop'); // criado e selecionado
app.createDb('archive'); // criado, 'shop' continua selecionado
app.listDatabases(); // ['shop', 'archive']
app.useDb('archive'); // troca de banco
app.dropDb('archive'); // app.db agora é null
Instâncias de sorla separadas não compartilham nada: chamar new sorla() duas vezes gera dois
conjuntos de bancos independentes.
Membros estáticos
| Membro | Descrição |
|---|---|
sorla.ValidationError |
O erro lançado quando um documento viola o schema, veja Validação por schema |
sorla.connect(url, options) |
Uma conexão WebSocket não vinculada a uma coleção, veja Sincronização com o servidor |
sorla.stream(url, { apply }) |
Um stream de Server-Sent Events tratado pelo seu código, veja Sincronização com o servidor |
sorla.readEventStream(body, onEvent) |
O parser de text/event-stream |
Bancos de dados
| Membro | Retorna | Descrição |
|---|---|---|
createCollection(name, schema?, options?) |
void |
Lança um erro quando o nome já existe. schema é um subconjunto de JSON Schema ou uma função; options é { nulls: 'last' | 'first' } |
getCollection(name) |
Collection | undefined |
Funciona com qualquer nome, inclusive nomes que não são propriedades válidas |
listCollections() |
string[] |
Nomes, na ordem de criação |
countCollections() |
number |
|
dropCollection(name) |
boolean |
Remove uma coleção e seus documentos |
getStats() |
{ name, documents, collections: [{ name, documents }] } |
Contagem de documentos |
name |
string |
As coleções também são propriedades do banco:
app.db.createCollection('products');
app.db.products === app.db.getCollection('products'); // true
app.db['order-items']; // nomes com hífen funcionam com colchetes
Uma coleção com o mesmo nome de um método do banco (name, getStats…) esconde o método no acesso
por propriedade; getCollection(name) sempre retorna a coleção.
app.db.getStats();
// { name: 'shop', documents: 3, collections: [{ name: 'products', documents: 3 }] }
Coleções
A coleção é onde o trabalho acontece. A lista completa de membros, com links:
| Grupo | Membros |
|---|---|
| Inserção | insertOne, insertMany |
| Leitura | find, findOne, count, first, last, all |
| Alteração | updateOne, updateMany, replaceOne, deleteOne, deleteMany, bulkWrite |
| Schema | setSchema, getSchema, validate, applyDefaults |
| Opções | setOptions, getOptions |
| Eventos | on, once, off |
| Reatividade | watch |
| Formulários | bindForm |
| Backend | stream, connect |
first, last e all
products.first; // cópia do primeiro documento na ordem de inserção, ou null
products.last; // cópia do último, ou null
products.all; // os documentos guardados (wrappers somente leitura), na ordem de inserção
all entrega os wrappers internos sem copiar: leia os campos com doc.name ou doc['a.b'], e não
guarde essas referências esperando dados atualizados (uma atualização guarda um novo objeto). Para
qualquer outra coisa, prefira find({}).
Opções da coleção
app.db.createCollection('tasks', null, { nulls: 'first' });
app.db.tasks.setOptions({ nulls: 'last' }); // retorna a coleção
app.db.tasks.getOptions(); // { nulls: 'last' }
| Opção | Valor padrão | Descrição |
|---|---|---|
nulls |
'last' |
Onde sort() e watch() colocam os valores ausentes e null: 'last' ou 'first', nas duas direções |
Um valor desconhecido lança o erro: options.nulls must be "first" or "last".