Visão geral
Guia oficial do @tile.js/database para BSON local, MongoDB e Mongoose.
@tile.js/database
O @tile.js/database é uma camada de persistência tipada para Node.js e Bun com a mesma API sobre múltiplos backends.
Você pode começar com o adapter local em BSON, e depois migrar para MongoDB, Mongoose ou até um adapter próprio sem reescrever toda a superfície pública da sua aplicação.
O foco da biblioteca
O Tile mantém uma API pequena, previsível e orientada a documentos. Ele não tenta reproduzir toda a linguagem de query do MongoDB nem substituir um ORM/ODM completo.
O que você encontra nesta documentação
Primeiros passos
Entenda o fluxo recomendado e monte o primeiro projeto sem perder tempo.
Instalação
Instale o pacote principal e veja quando adicionar dependências opcionais.
Database
Configure a instância principal, lifecycle, logger e cache de collections.
Adapters
Compare o adapter local, MongoDB, etc... e o contrato para adapters customizados.
Schema
Modele tipos, defaults, índices únicos, normalização e validação.
Collections
Registre collections, organize a camada de dados e trabalhe com documentos.
CRUD
Veja inserção, leitura, atualização, remoção e paginação com exemplos reais.
Mesmo fluxo, backends diferentes
import { Database } from "@tile.js/database";
import { memberSchema, type Member } from "./schema/member.ts";
const connection = new Database({
dbName: "app",
});
export const database = Object.assign(connection, {
member: connection.collection<Member>("member", memberSchema),
});import { Database } from "@tile.js/database";
import { mongodbAdapter } from "@tile.js/database/adapters/mongodb";
import { MongoClient } from "mongodb";
import { memberSchema, type Member } from "./schema/member.ts";
const client = new MongoClient("mongodb://127.0.0.1:27017");
const connection = new Database({
storage: mongodbAdapter(client, {
dbName: "app",
}),
});
export const database = Object.assign(connection, {
member: connection.collection<Member>("member", memberSchema),
});import { Database } from "@tile.js/database";
import { sqliteAdapter } from "@tile.js/database/adapters/sqlite";
import DatabaseDriver from "better-sqlite3";
import { memberSchema, type Member } from "./schema/member.ts";
const connection = new Database({
storage: sqliteAdapter({ default: new DatabaseDriver }, {
dbName: "app",
}),
});
export const database = Object.assign(connection, {
member: connection.collection<Member>("member", memberSchema),
});Conceitos centrais
Databasecentraliza configuração, adapter, logger e cache de collections.Schemadefine estrutura, defaults, normalização e validação dos documentos.Collectionexpõe a API de CRUD usada pela aplicação.StorageAdaptertroca o backend sem mudar o contrato principal da biblioteca.
Importante sobre consultas e paginação
Mesmo usando MongoDB ou Mongoose, operações como find(), countDocuments(), deleteMany() e paginate() continuam seguindo a semântica do Tile. Se você precisa de queries avançadas, agregações ou filtros executados diretamente pelo banco, trate o driver/ODM nativo no ponto específico da aplicação.