在我当前的项目中,我使用的是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
,尽管该行始终被插入。上面的代码基本上是文档之外的。
查询后,您需要添加如下选择:
const { data, error } = await supabase
.from('your_table')
.insert([{ column1: 'value1', column2: 'value2' }])
.select();
如果您只想要 id,您可以将其包含在您选择的小括号中
为了实现这一目标,您必须使用
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>
);
}