如何在 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' })