JS_*_*e18 2 javascript authentication vue.js supabase supabase-database
我正在尝试构建一个包含 Supabase 身份验证的 Vue.js 应用程序。我希望在注册时使用内置的 Supabase signUp() 方法来处理其他用户数据。为此,我向 SignUp 对象添加了一个属性,用于存储其他用户数据以及电子邮件和密码:
let { data, error } = await supabase.auth.signUp({
email: 'someone@email.com',
password: 'QQlbOIyZuwutISUzceOz',
data: { isVendor: true }
})
Run Code Online (Sandbox Code Playgroud)
但是,当我在创建用户后运行 console.log 时,我没有看到添加到用户对象中的其他数据属性。
user_metadata我还尝试将数据分配给用户对象中的现有属性,如下所示:
let { data, error } = await supabase.auth.signUp({
email: 'someone@email.com',
password: 'QQlbOIyZuwutISUzceOz',
user_metadata: { isVendor: true }
})
Run Code Online (Sandbox Code Playgroud)
然而,这也没有奏效。如何配置 signUp() 方法(或者可能是 Supabase 仪表板中的注册用户门户)来存储其他用户数据?
根据文档,在注册时添加额外详细信息的唯一方法是添加如下数据:
const { data, error } = await supabase.auth.signUp(
{
email: 'example@email.com',
password: 'example-password',
options: {
data: {
first_name: 'John',
age: 27,
}
}
}
)
Run Code Online (Sandbox Code Playgroud)
这些数据将作为 json 添加到名为 raw_user_meta_data 的列中。如果你想保留这个元数据,你可以编写一个如下所示的触发器。
* This trigger automatically creates a user entry when a new user signs up via Supabase Auth.
*/
create function public.handle_new_user()
returns trigger as $$
begin
insert into public.mrbs_users (id, email, name)
values (new.id, new.email, new.raw_user_meta_data->>'name');
return new;
end;
$$ language plpgsql security definer;
create trigger on_auth_user_created
after insert on auth.users
for each row execute procedure public.handle_new_user();
Run Code Online (Sandbox Code Playgroud)