我想知道是否有更好的方法来处理这种情况。虽然,它很简单,记住点击次数,但我试图消除一个查询。
我有清单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
使用单个查询?还是最好进行两次数据库调用?
你的意见?