You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Supabase-js直接递增timesVisited字段值?

直接递增Supabase数据表字段值的实现方法

当然可以直接实现字段递增,无需两次调用接口。Supabase支持通过原子操作直接在数据库层面完成字段递增,既高效又能避免并发场景下的竞态问题。

具体实现代码

你需要结合过滤条件定位目标行,使用Supabase的SQL表达式或内置辅助函数直接更新timesVisited字段:

方法一:使用SQL表达式

const { data, error } = await Admin.from(tableName)
  .update({ timesVisited: Admin.sql`timesVisited + 1` })
  .eq('userID', userID)
  .eq('eventName', eventName);

方法二:使用inc辅助函数(Supabase JS v2+)

导入inc函数后可简化递增逻辑:

import { inc } from '@supabase/supabase-js/dist/module/lib/postgres';

const { data, error } = await Admin.from(tableName)
  .update({ timesVisited: inc(1) })
  .eq('userID', userID)
  .eq('eventName', eventName);

关键注意事项

  • 必须添加.eq('userID', userID)和.eq('eventName', eventName)过滤条件,否则会误更新表中所有行的timesVisited字段。
  • 这种操作是数据库层面的原子操作,多个请求同时触发时不会出现计数错误,比先查询再更新的方式更可靠。

内容的提问来源于stack exchange,提问作者Shivam Sahil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:07:05