如何获取nextjs/supabase中最后插入的id

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

在我当前的项目中,我使用的是supabase 和nextjs。发生了一些奇怪的事情,在将一行插入表中后,我想获取该行的 id,但它不起作用,我不知道为什么。

import { supabase } from '../utils/supabaseClient';

export default function TestSupabase() {
    const testSupabaseConnection = async () => {
        try {
            const { data, error } = await supabase
                .from('your_table')
                .insert([{ column1: 'value1', column2: 'value2' }]);
            
            console.log('Data:', data, 'Error:', error);
        } catch (err) {
            console.error('Unexpected Error:', err);
        }
    };
    

    return (
        <div>
            <h1>Supabase Konfigurationstest</h1>
            <button onClick={testSupabaseConnection}>Teste Supabase-Verbindung</button>
        </div>
    );
}
// utils/supabaseClient.js
import { createClient } from '@supabase/supabase-js';

const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
export const supabase = createClient(supabaseUrl, supabaseKey);
{
  "name": "goatlib",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@ericblade/quagga2": "^1.8.4",
    "@heroicons/react": "^1.0.6",
    "@supabase/supabase-js": "^2.39.2",
    "next": "14.0.4",
    "react": "^18",
    "react-dom": "^18"
  },
  "devDependencies": {
    "autoprefixer": "^10.0.1",
    "eslint": "^8",
    "eslint-config-next": "14.0.4",
    "postcss": "^8",
    "tailwindcss": "^3.3.0"
  }
}

控制台输出为:

Data: null Error: null
,尽管该行始终被插入。上面的代码基本上是文档之外的。

next.js supabase supabase-js
2个回答
1
投票

查询后,您需要添加如下选择:

const { data, error } = await supabase
.from('your_table')
.insert([{ column1: 'value1', column2: 'value2' }])
.select();

如果您只想要 id,您可以将其包含在您选择的小括号中


0
投票

为了实现这一目标,您必须使用

select()
single()
方法


import { supabase } from '../utils/supabaseClient';

export default function TestSupabase() {
    const testSupabaseConnection = async () => {
        try {
            const { data, error } = await supabase
                .from('your_table')
                .insert([{ column1: 'value1', column2: 'value2' }])
                .single("id") // specify the column you want returned
                .single();

            
            console.log('Data:', data, 'Error:', error);
        } catch (err) {
            console.error('Unexpected Error:', err);
        }
    };
    

    return (
        <div>
            <h1>Supabase Konfigurationstest</h1>
            <button onClick={testSupabaseConnection}>Teste Supabase-Verbindung</button>
        </div>
    );
}

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