如何在创建用户之前检索其数据?

问题描述 投票:0回答:1

我正在使用 vite React 和 SUPABASE 开发一个项目。我可以选择登录并注册工作,但是,我无法弄清楚如何在用户注册时创建会话。 我没有使用supabase auth,因为我不知道如何实现它,所以我使用插入功能。

注册.tsx

const createUser = async () => {    //This part prevents sending the form without an image for the avatar
        if(!formData.avatar){
            setError(true)
            setTimeout(() => {
                setError(false)
            },5000) 
        }
        else{
            try{
                const res = await supabase.from("users").insert([  //This part gets the inputs from the 
                    {                                              //form and inserts it on supabase
                        profilepic: `${formData.avatar}`,
                        name: `${formData.firstName}`,
                        last_name: `${formData.lastName}`,
                        email: `${formData.email}`,
                        password: `${formData.password}`,
                    }
                ])
                if(res.error){
                    throw res.error
                }
                if (res.status === 201) {            // This part (supposedly) creates a session with the 
                    setStatus(true);                 // the data from the form
                    setFormData(initialState);
                    sessionStorage.setItem('supabaseSession', JSON.stringify(formData))
                    setTimeout(() => {
                        setStatus(false);
                    }, 5000);
                }
            }
            catch(error){
                console.error(error.message)
            }
            setTimeout(() => {
                navigate('/')                       // Lastly this redirects to the main page
            },2000)
        }
    }

我尝试了 gpt 建议我的一些东西,但不是很可靠,因为它只知道旧版本的 supabase。

if (res.status === 201) {
                    const userId = res.data[0].id

                    setStatus(true);
                    setFormData(initialState);
                    sessionStorage.setItem('supabaseSession', JSON.stringify(formData))
                    sessionStorage.setItem('userId', JSON.stringify(userId))

                    setTimeout(() => {
                        setStatus(false);
                    }, 5000);
                }
reactjs vite supabase supabase-database supabase-js
1个回答
0
投票

您可以通过在插入语句后添加

.select()
来获取新插入的记录。

const { data, error } = await supabase.from( "users" ).insert({
    profilepic: `${ formData.avatar }`,
    name: `${ formData.firstName }`,
    last_name: `${ formData.lastName }`,
    email: `${ formData.email }`,
    password: `${ formData.password }`,
}).select()

确保对 RLS 策略同时拥有 插入权限选择权限

您可以点击文档右侧的按钮查看不同的用例。在 Supabase 文档中了解更多信息:https://supabase.com/docs/reference/javascript/insert?queryGroups=example&example=create-a-record-and-return-it

Supabase docs

© www.soinside.com 2019 - 2024. All rights reserved.