supabase-js
supabase-js copied to clipboard
Referencing missing column
@supabase/supabase-js": "^2.39.0" using Supabase CLI to [generate the types] "supabase": "^1.123.0"
Query the same referenced table multiple times work but give you a Typescript error as it expect an array.
to reproduce you can use the datasource (doc example)
create table
users (id int8 primary key, name text);
create table
messages (
sender_id int8 not null references users,
receiver_id int8 not null references users,
content text
);
insert into
users (id, name)
values
(1, 'Kiran'),
(2, 'Evan');
insert into
messages (sender_id, receiver_id, content)
values
(1, 2, '👋');
query :
const { data, error } = await supabase
.from('messages')
.select(`
content,
sender_id(name),
receiver_id(name)
`)
now using data[0].sender_id.name will work but will give you an typescript error. "sender_id: SelectQueryError<"Referencing missing column name">[];
Bypass temporary solution :
type patch = { content: text; sender_id: Tables<"users">; receiver_id: Tables<"users">}[];
const { data, error } = await supabase
.from('messages')
.select(`
content,
sender_id(name),
receiver_id(name)
`).returns<patch>()
Is there any PR which fixes those? I recently updated supabase-js version and generated new types and got similar issue, some database fields are not recognized anymore. I cant pinpoint the exact moment it stated to break tho.
Edit: For me this solved it - https://github.com/supabase/supabase-js/issues/974
Same problem for me even when switching to 2.39.3
i got the same error
Same here!
same here...
still an issue
Same here. Weirdly, this works...
supabase
.from('selection_assets')
.select(
`
id,
comment,
order,
created_at,
asset: assets (
id,
name,
is_listed
)
`,
)
.eq('selection_id', selectionId)
.single();
and this doesn't...
supabase
.from('selections')
.select(
`
*,
client: client_id(id)
`,
)
.eq('id', selectionId)
.single();
still an issue
Got the issue too
Same issue
Any solution?
I have the feeling it depends on in which direction or on which side the relation is defined. Still need to verify this.
@ohrrkan As mentioned in the documentation here: https://supabase.com/docs/reference/javascript/select (example for 'Query referenced tables through a join table')
We can infer types by doing this:
// To infer types, use the name of the table (in this case `users`) and
// the name of the foreign key constraint.
const { data, error } = await supabase
.from('messages')
.select(`
content,
from:users!messages_sender_id_fkey(name),
to:users!messages_receiver_id_fkey(name)
`)
Worked for me.