TileJS
TileJS
Database

Collections

Crie e gerencie Collections utilizando Schemas

Collections

Uma Collection é onde os documentos são armazenados.

Toda Collection pertence a uma Database e utiliza um Schema para validar os dados inseridos.

Uma Collection é semelhante a uma tabela em bancos de dados relacionais, porém armazena documentos em vez de linhas.


Criando uma Collection

Primeiro crie um Schema.

schema.ts
import { Schema } from "@tilejs/database";

interface Member {
  _id?: string;
  name: string;
  email: string;
}

export const memberSchema = new Schema<Member>({
  name: {
    type: String,
    required: true,
  },

  email: {
    type: String,
    unique: true,
  },
});

Depois registre a Collection na Database.

database.ts
import { Database } from "@tilejs/database";
import { memberSchema } from "./schema";

const connection = new Database();

export const database = Object.assign(connection, {
  members: connection.collection<Member>("members", memberSchema),
});

Agora a Collection poderá ser utilizada normalmente.


Estrutura criada

Na primeira execução o TileJS cria automaticamente todos os arquivos necessários.


O que cada arquivo faz?

ArquivoDescrição
_schema.jsonDescrição completa do Schema.
_collection_index_id.jsonÍndice do campo _id.
_collection_index_<campo>.jsonÍndice de qualquer campo marcado com unique: true.
*.bsonDocumentos armazenados pela Collection.

Métodos disponíveis

Após criar uma Collection você terá acesso aos principais métodos.

Prop

Type


Exemplo

const member = await database.members.insertOne({
  name: "Israel",
  email: "israel@gmail.com",
});

console.log(member);

Buscar um documento.

const member = await database.members.findOne({
  email: "israel@gmail.com",
});

Atualizar.

await database.members.updateOne(
  {
    email: "israel@gmail.com",
  },
  {
    name: "Israel Rabbi",
  }
);

Remover.

await database.members.deleteOne({
  email: "israel@gmail.com",
});

Índices

Sempre que um campo possuir unique: true, a Collection criará automaticamente um índice.

const schema = new Schema({
  email: {
    type: String,
    unique: true,
  },
});

Será criado:

_collection_index_email.json

Exemplo:

{
  "israel@gmail.com": "6a3deee44f73903377c3cf0f"
}

Esses índices permitem localizar documentos rapidamente e impedir valores duplicados.


Descrevendo o Schema

A Collection possui acesso direto às informações do Schema.

console.log(database.members.describeSchema());

Resultado:

{
  fields: {
    _id: {...},
    name: {...},
    email: {...},
    __v: {...}
  },
  timestamps: true,
  collection: undefined
}

Organização recomendada

src/
├── database.ts
├── schemas/
│   └── member.ts
├── collections/
│   └── member.ts
└── index.ts

Separar Schemas e Collections facilita a manutenção conforme o projeto cresce.


Próximo passo

Agora que sua Collection está criada, você pode começar a inserir, consultar, atualizar e remover documentos.

On this page