【问题标题】:Is there a way to limit the number of records for a user using Prisma?有没有办法限制使用 Prisma 的用户的记录数?
【发布时间】:2022-11-02 20:36:02
【问题描述】:

我能给出的最简单的例子是一个可以创建多个帖子的用户。可以将多个帖子绑定到单个用户的一对多关系。

但是,如果我希望用户最多只能有 10 个帖子怎么办?理想情况下,我可以在创建新帖子时运行某种查询,如果已达到限制,则拒绝创建该帖子(或可能替换帖子)。

我对此感到有些困惑。而且我不确定是否有一种方法可以对此进行建模以创建所需的结果。

否则,我看到的唯一真正的解决方案是获取用户的所有帖子,并在尝试创建新帖子之前对其进行计数。但这需要两次调用数据库而不是一次,这是我试图避免的问题。

【问题讨论】:

    标签: node.js database postgresql prisma


    【解决方案1】:

    你考虑过数据库吗扳机?下面的例子取自this StackExhange post

    CREATE OR REPLACE FUNCTION check_number_of_row()
    RETURNS TRIGGER AS
    $body$
    BEGIN
        IF (SELECT count(*) FROM your_table) > 10
        THEN 
            RAISE EXCEPTION 'INSERT statement exceeding maximum number of rows for this table' 
        END IF;
    END;
    $body$
    LANGUAGE plpgsql;
    
    CREATE TRIGGER tr_check_number_of_row 
    BEFORE INSERT ON your_table
    FOR EACH ROW EXECUTE PROCEDURE check_number_of_row();
    

    不幸的是,Prisma 似乎还不支持触发器,所以你必须在 SQL 中定义它:https://github.com/prisma/prisma/discussions/2382

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多