我想知道是否有更好的方法来处理这种情况。虽然,它很简单,记住点击次数,但我试图消除一个查询。
我有清单Books。只有分配给这本书的用户才能看到其中的书籍和其他内容。它基本上是 API 调用。/Books/, /Books/Chapters/,/Books/Chapters/Pages/等。权限附加到Books数据库中的条目。
Books,“章节,页面”等都在不同的表格中。用户权限存储在不同的表中。桌子是这样的。
UserID, BookID
--------------
101 1
102 1
102 2
...
用户信息是从 API 调用本身(基本身份验证)中获取的。401 Unauthorized如果请求存在, API 应该返回,Book但用户没有权限Book。如果请求“does not exist, then it should return未找到图书 404”。
通常,首先我需要通过查询检查该用户和请求的权限Book。如果该用户的用户权限表中存在该记录,那么我应该运行另一个查询以获取Book“章节”等。
目前,我正在将这两个查询与condition that checks for the existence of the record for this user for the requested权限表中的“WHERE EXISTS Book”结合起来。所以只有在用户权限表中有记录时才会返回记录。
但是有了这个,我不知道Book是不存在还是用户没有权限,尽管我可以减少一个数据库调用来单独检查用户权限。有了这个,我无法区分401和404。
有没有更好的方法来做到这一点,同时能够区分401并404使用单个查询?还是最好进行两次数据库调用?
你的意见?