如何在 Supabase 中插入不存在的记录并跳过存在的记录?
How can I insert un-exist record and skip exist record in Supabase?
如何使用插入但跳过我的 Supabase 中已有的记录?
我有一个非常大的记录,我已经从中抓取了(超过 3000 条记录,正好是 3393 条记录)
我认为 INSERT 会自动跳过我的 Supabase 中的现有记录,但似乎不是,我创建了相同的 table 数据并让代码 运行 两次而不是一次它的记录是我现有记录的两倍,所以我知道它是重复的记录。
这是我在 ReactJS 中使用 INSERT
到 Supabase 的代码(animeData
来自 JSON 我已经完成了抓取):
/* eslint-disable react-hooks/exhaustive-deps */
import './index.css'
import { useEffect } from 'react'
import { supabase } from './supabaseClient'
import animeData from './data.json'
export default function App() {
useEffect(async () => {
// POST Anime List!!!!
for(let i = 0; i < animeData.length; i++){
const { data, error } = await supabase
.from('test')
.insert([
{anime_title: animeData[i].animeTitle, anime_image: animeData[i].animeImg, anime_url: animeData[i].animeUrl}
])
}
}, [])
return (
<div className="container">
</div>
);
}
我能以某种方式 SELECT
现有记录并跳过它们吗?
我曾经创建一个与此功能相同的模型,但在后端使用 MySQL
,但我不知道如何在 Supabase 中编写相同的模型(我认为 Supabase 正在使用PostgreSQL
)
我用来创建的模型中的相同功能,注册模型示例:
const User = function (user) {
this.username = user.username;
this.password = user.password;
};
// SIGN UP
User.signup = async (newUser, result) => {
let sql = `SELECT username FROM users WHERE username ="${newUser.username}"`;
db.query(sql, async function (err, data) {
if (data.length !== 0) {
return result(err, { data: "User already exists" });
} else {
await db.query("INSERT INTO users SET ?", newUser, (err, data) => {
if (err) {
result(err, null);
return;
} else {
return result(null, { data: "success" });
}
});
}
});
};
我想在 Supabase 中写这样的东西,但我不知道怎么写。我已经阅读了 INSERT Supabase 但我仍然一无所知。
您想检查您的记录是否存在,如果存在则更新它,如果不存在则创建它。
如何检查记录是否存在,尝试从你的数据库select它,如果结果为空,它不存在
const { data:record, error } = await supabase
.from("test")
.select("*")
.eq("column_name", name);
如果记录已经存在,用upsert更新它:https://supabase.com/docs/reference/javascript/upsert
const { data, error } = await supabase
.from('test')
.upsert({ name: 'new name' }, { onConflict: 'id' })
如何使用插入但跳过我的 Supabase 中已有的记录?
我有一个非常大的记录,我已经从中抓取了(超过 3000 条记录,正好是 3393 条记录)
我认为 INSERT 会自动跳过我的 Supabase 中的现有记录,但似乎不是,我创建了相同的 table 数据并让代码 运行 两次而不是一次它的记录是我现有记录的两倍,所以我知道它是重复的记录。
这是我在 ReactJS 中使用 INSERT
到 Supabase 的代码(animeData
来自 JSON 我已经完成了抓取):
/* eslint-disable react-hooks/exhaustive-deps */
import './index.css'
import { useEffect } from 'react'
import { supabase } from './supabaseClient'
import animeData from './data.json'
export default function App() {
useEffect(async () => {
// POST Anime List!!!!
for(let i = 0; i < animeData.length; i++){
const { data, error } = await supabase
.from('test')
.insert([
{anime_title: animeData[i].animeTitle, anime_image: animeData[i].animeImg, anime_url: animeData[i].animeUrl}
])
}
}, [])
return (
<div className="container">
</div>
);
}
我能以某种方式 SELECT
现有记录并跳过它们吗?
我曾经创建一个与此功能相同的模型,但在后端使用 MySQL
,但我不知道如何在 Supabase 中编写相同的模型(我认为 Supabase 正在使用PostgreSQL
)
我用来创建的模型中的相同功能,注册模型示例:
const User = function (user) {
this.username = user.username;
this.password = user.password;
};
// SIGN UP
User.signup = async (newUser, result) => {
let sql = `SELECT username FROM users WHERE username ="${newUser.username}"`;
db.query(sql, async function (err, data) {
if (data.length !== 0) {
return result(err, { data: "User already exists" });
} else {
await db.query("INSERT INTO users SET ?", newUser, (err, data) => {
if (err) {
result(err, null);
return;
} else {
return result(null, { data: "success" });
}
});
}
});
};
我想在 Supabase 中写这样的东西,但我不知道怎么写。我已经阅读了 INSERT Supabase 但我仍然一无所知。
您想检查您的记录是否存在,如果存在则更新它,如果不存在则创建它。
如何检查记录是否存在,尝试从你的数据库select它,如果结果为空,它不存在
const { data:record, error } = await supabase
.from("test")
.select("*")
.eq("column_name", name);
如果记录已经存在,用upsert更新它:https://supabase.com/docs/reference/javascript/upsert
const { data, error } = await supabase
.from('test')
.upsert({ name: 'new name' }, { onConflict: 'id' })