v1.2adapters/sqlite
Tile.JS
Tile.JS

Projeto em 5 minutos

Monte um projeto real com schema, database e uma collection pronta para uso.

Projeto em 5 minutos

Nesta página você vai montar um setup simples, organizado e fácil de evoluir com src/index.ts como ponto de uso, src/database/index.ts como ponto central da database e src/database/schema/member.ts para o domínio.

Estrutura sugerida

index.ts
member.ts
index.ts

1. Defina a interface e o schema

src/database/schema/member.ts
import { Schema } from "@tile.js/database";

export interface Member {
  _id?: string;
  name: string;
  email: string;
  verified?: boolean;
}

export const memberSchema = new Schema<Member>({
  name: {
    type: String,
    required: true,
    trim: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
    lowercase: true,
  },
  verified: {
    type: Boolean,
    default: false,
  },
});

2. Configure a collection e centralize a database

src/database/index.ts
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),
});

3. Use a database na aplicação

src/index.ts
import { database } from "./database/index.ts";

await database.connect();

const member = await database.member.create({
  name: "Ada Lovelace",
  email: "ADA@EXAMPLE.COM",
});

const found = await database.member.findOne({
  email: "ada@example.com",
});

await database.member.updateOne(
  { _id: member._id },
  {
    $set: { verified: true },
  },
);

console.log(found);

await database.disconnect();

Resultado esperado

  • name será normalizado com trim
  • email será salvo em minúsculas por causa de lowercase
  • verified receberá false por default
  • _id, __v e timestamps serão adicionados automaticamente por padrão

No modo local

Com o adapter padrão, os dados ficam em .tile/database/<dbName>/<collection>/. Você não precisa criar essa pasta manualmente.

Para onde ir depois

On this page