Tài liệu

Tham chiếu Context - Repository

Tham chiếu Context - Repository Truy cập các bảng cơ sở dữ liệu qua repository. Xem Phương thức Repository để biết đầy đủ. Truy cập repository // Access repository by table name const productsRepo = $ctx.$repos.products; const usersRepo = $ctx.$repos.enfyra_user; // Access main t

Tham chiếu Context - Repository

Truy cập các bảng cơ sở dữ liệu qua repository. Xem Phương thức Repository để biết đầy đủ.

Truy cập repository

// Access repository by table name
const productsRepo = $ctx.$repos.products;
const usersRepo = $ctx.$repos.enfyra_user;

// Access main table repository
const mainRepo = $ctx.$repos.main;

// Field permissions: main + explicit secure namespace
// - `$repos.main` — main route table, field permissions enforced
// - `$repos.secure.<tableName>` — same enforcement for any table name
// - `$repos.<tableName>` — same data access without field-permission enforcement (use `secure` when rules must apply)

// Check if repository exists
if ($ctx.$repos.products) {
  const result = await $ctx.$repos.products.find({});
}

Phương thức repository

Mỗi repository cung cấp các phương thức cho raw record và phương thức riêng aggregate() cho kết quả tính toán:

// Find records
const result = await $ctx.$repos.products.find({
  filter: { category: { _eq: 'electronics' } },
  fields: 'id,name,price',
  limit: 10,
  sort: '-createdAt'
});

// Create record
const createResult = await $ctx.$repos.products.create({
  data: {
    name: 'New Product',
    price: 99.99
  }
});

// Update record
const updateResult = await $ctx.$repos.products.update({
  id: 123,
  data: { price: 89.99 }
});

// Delete record
const deleteResult = await $ctx.$repos.products.delete({
  id: 123
});

// Tính summary theo filter mà không tải raw record
const summaryResult = await $ctx.$repos.products.aggregate({
  filter: { isActive: { _eq: true } },
  measures: { products: { count: 'id' } }
});

Lưu ý: Các phương thức làm việc với record trả về { data: [...], meta: {...} }. aggregate() trả các row đã tính trong data và không trả meta.aggregate.

Xem hướng dẫn về phương thức repository để biết đầy đủ.

Tiếp theo