Недавно мне нужно было запустить пользовательские функции SQL в проекте Supabase. Их Javascript SDK не поддерживает это, поэтому единственный способ — использовать функции базы данных. Затем вы можете вызывать эти функции с помощью Javascript SDK.
Давайте рассмотрим очень простой пример, используя таблицу с именем users
.
CREATE OR REPLACE FUNCTION all_users()
RETURNS TABLE (f_id uuid
, f_email text
, f_full_name text)
LANGUAGE plpgsql AS
$func$
BEGIN
RETURN QUERY
SELECT id, email, full_name FROM users
END
$func$;
Приведенная выше функция вернет id, email, full_name
для всех пользователей в таблице. Чтобы быстро протестировать функцию, вы можете запустить SELECT * FROM all_users();
.
Теперь, переходя к коду Javascript, вы можете запустить функцию, используя следующий синтаксис:
let { data, error } = await supabase.rpc('all_users')
Это так просто 😅.
Теперь давайте посмотрим на функцию, которая получает два параметра:
CREATE OR REPLACE FUNCTION all_users(created_from timestamp, created_to timestamp)
RETURNS TABLE (f_id uuid
, f_email text
, f_full_name text)
LANGUAGE plpgsql AS
$func$
BEGIN
RETURN QUERY
SELECT id, email, full_name FROM users BETWEEN created_from AND created_to
END
$func$;
И мы можем вызвать эту функцию из Javascript SDK следующим образом:
const { data, error } = await supabase
.rpc('all_users', { created_from: ..., created_to: ... })
Если вы хотите связаться со мной, проверьте мой Twitter.
Статья размещена с использованием bloggu.io. Попробуйте бесплатно.