0

我不熟悉与 Prisma 合作。我不清楚的一个方面是检查用户是否对对象具有权限的正确方法。假设我们有BookAuthor模型。每本书都有一个作者(一对多)。只有作者有权删除图书。

执行此操作的一种简单方法是:

prismaClient.book.deleteMany({
    id: bookId, <-- id is known
    author: {
        id: userId <-- id is known
    }
})

但是这种方式很难向UnauthorizedError用户展示。相反,响应将是一个500状态码,因为我们无法知道查询失败的确切原因。

另一种方法是先查询图书并检查图书实例的作者,这将导致再查询一次。

在 Prisma 中是否有最佳实践?

4

1 回答 1

0

假设您使用的是 PostgreSQL,最好的方法是使用 row-level-security(RLS) - 但不幸的是,Prisma 尚未正式支持它。这里有关于这个主题的讨论 https://github.com/prisma/prisma/issues/5128

至于目前的情况,在我看来,最好使用附加查询并为用户提供信息反馈,而不是使用您建议的其他方法而不知道为什么它没有被删除。

最终,由您根据您的用例来决定——了解失败的原因对您来说是否重要。

于 2021-05-19T12:19:32.410 回答