我正在尝试将RESTful API设计为辅助项目。
我也使用MongoDB作为数据库
(我是NoSQL设计的新手,所以我需要帮助,如果我对如何设计文档有误解。)
我有以下示例实体:
Event {
id: string
name: string
date: date
location: location
subgroups: group[]
}
Group {
id: string
owners: user[]
members: user[]
parentEvent: event
posts: post[]
}
User {
id: string
Name: string
attendingGroups: group[]
owningGroups: group[]
}
post {
id: string
parentgroup: Group
}
location {
id: string
city: string
}
对于上面的例子,
我是否应该指定一个让所有群组与该用户相关联的来电?
或者我应该获取用户并从检索到的用户那里获取关联的组?
答案 0 :(得分:0)
取决于你如何设计它。您可以将资源嵌入到其他资源中,以免您从N + 1选择问题中解脱出来,没有任何反对意见。
Hal + json格式是您应该嵌入资源的格式。
在REST中,您甚至可以使用?_embed = groups参数进行嵌入。
嵌入或不嵌入取决于您的应用程序需求,而不是嵌入方式=您应该设计一个像/ groups?user = eralpb这样的过滤器来获取组。或者子资源也可以像/ users / eralpb / groups那样返回我的组。