Lập trình viên / Tra cứu
Quan hệ: include và lọc qua bảng liên kết
Join theo foreign key đã khai báo. Không nhận raw JOIN SQL hoặc nối bảng tùy ý.
Khai báo tên quan hệ
Trong schema, cột players.server_id references servers.id với alias:"server", reverse_alias:"players". Alias là tên dùng trong SDK, không phải tên bảng tự đoán. Tải lại TypeScript types sau khi thay schema.
{"name":"server_id","type":"bigint","references":{
"table":"servers","column":"id","alias":"server",
"reverse_alias":"players","on_delete":"restrict"
}}Forward và reverse
Forward trả object hoặc null nếu không có/không được thấy dòng liên kết. Reverse trả array; nếu FK có ràng buộc một cột PRIMARY/UNIQUE thì là to-one. Unique index riêng không tự đổi shape array.
const players = await client.from("players")
.include({server:{columns:["id","name"]}}).select("id", "nickname");
const servers = await client.from("servers")
.include({players:{columns:["id","nickname"],limit:10}}).select("id", "name");Lọc liên kết
server__id trong filter đi theo alias. Điều kiện quan hệ có thể loại dòng gốc khi không có dòng liên kết khớp/quyền đọc. Cần quyền đọc cột nối trên cả hai bảng; include không bỏ qua RLS.
await client.from("players").filter({server__id:"1"}).select();Giới hạn
Độ sâu tối đa 2, reverse to-many mặc định 20 con, tối đa 100 con mỗi relation. Tổng expanded rows tối đa kỹ thuật 2000 và response 5 MiB; giảm limit gốc/con khi vượt. Include chỉ dùng với reads. Không có aggregate, arbitrary join, cross-project join hoặc realtime subscription ở bản này.