问题描述
我对 Supabase 和 Postgresql 很陌生,偶然发现了一个问题。如果我正在创建一个人们应该能够登录的 Todo 应用程序,并且根据订阅类型(普通用户或专业帐户),todos 的总数应该受到限制。假设普通用户应该可以发布 20 个待办事项,而专业用户应该没有限制。
这是我正在使用的表格:
账户表
待办事项表
但是我将如何编写仅在 1. 用户经过身份验证 2. 不超过 todoCount 限制时才允许插入的策略。
我正在使用 Ionic/angular 创建应用。
感谢回答
解决方法
我认为您看错了问题,也许您应该在实际发送请求之前验证用户是否可以添加新的待办事项记录
伪代码示例:
if user.number_of_todos >= 20 and user.subscription_type != 'pro':
handle_insufficient_plan_error()
else:
add_new_todo()
我认为在不久的将来它会被 Supabase 函数支持(如果你不想要客户端验证)
或者,您可以使用更复杂的查询来确保用户无法添加待办事项
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO todo_table (user_id,title,description)
VALUES ('123','call mom','call my mom')
WHERE
(
SELECT COUNT(id) FROM todo_table WHERE user_id = '123'
) < 5;
END;
来源:Postgres insert row only if row count is under a limit
希望我有所帮助:)