0

我对 Supabase 和 PostgreSQL 很陌生,偶然发现了一个问题。如果我正在创建一个人们应该能够登录的待办事项应用程序,并且根据订阅类型(普通用户或专业帐户),待办事项的总数应该受到限制。假设普通用户应该能够发布 20 个待办事项,但专业用户应该是无限的。

这是我正在使用的表格:

帐户表

  • 标识(uuid)
  • 订阅类型(用户/专业)
  • toDoCount(数字。待办事项的总数)

待办事项表

  • ID
  • 用户身份
  • 标题
  • 描述

但是,我将如何编写仅在 1. 用户通过身份验证 2. 未超过 toDoCount 限制时才允许插入的策略。

我正在使用 Ionic/angular 创建应用程序。

感谢解答

4

1 回答 1

1

我认为您看错了问题,也许您应该在实际发送请求之前验证用户是否可以添加新的待办事项记录

伪代码示例:

if user.number_of_todos >= 20 and user.subscription_type != 'pro':
    handle_insufficient_plan_error()
else:
    add_new_todo()

我认为在不久的将来它将受到 Supbase 功能的支持(如果您不想要客户端验证)

或者,您可以使用更复杂的查询来确保用户无法添加待办事项

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 仅在行数低于限制时才插入行

希望我有所帮助:)

于 2021-07-09T15:06:54.303 回答