【发布时间】:2014-06-20 17:54:49
【问题描述】:
我正在使用 Grails 2.4 并提供 REST API。我正在寻找有关域/实体创建的建议。
我有 4 个简单的表格:
1) projects:
projectId (auto-increment, PK)
name
description
(some other fields but not important for my question I guess)
2) users:
userId (auto-increment, PK)
roleId (FK->roles/roleId)
username
(some other fields but not important for my question I guess)
3) project_users (join table for projects & users):
projectId FK->projects/projectId)
userId (FK->users/userId)
4) roles:
roleId (auto-increment, PK)
name
角色可以是用户、经理或管理员。一个项目可以有多个用户(角色“用户”的多个用户和角色“经理”的 1 个用户)。
此 REST API (JSON) 需要的使用者是项目列表 (GET),其中包含每个项目的所有用户的名称(用户名而不是 userId)(所有用户.. 如果用户不是经理则无关紧要)。他们还希望能够将新用户 (PUT) 添加到项目中。同时创建新项目(POST)。对于所有请求 JSON 请求/响应应包含用户名)我真的在寻找有关如何继续的建议。
为了熟悉 Grails/REST,我定义了 3 个域(项目、用户和角色),并且 GET 和 POST JSON 到这些域单独工作正常(没有完成域关系)。
然后为了发挥域关系,我尝试了“db-reverse-engineer”插件,它为以下域提供了关系。
class Projects {
String name
String description
static hasMany = [userses: Users]
static mapping = {
id column: "project_id"
version false
}
static constraints = {
name unique: true
description nullable: true
}
}
class Users {
String username
Roles roles
static hasMany = [projectses: Projects]
static belongsTo = [Roles]
static mapping = {
id column: "user_id"
version false
}
static constraints = {
username maxSize: 32, unique: true
}
}
class Roles {
String name
static hasMany = [userses: Users]
static mapping = {
id column: "role_id", generator: "assigned"
version false
}
static constraints = {
name maxSize: 16, unique: true
}
}
现在我不确定如何进一步进行。我是否需要创建一个数据库视图(db 不允许查看更新)和一个相应的控制器并保存编写自定义代码。我只是在玩 Grails 和 REST 几天,所以请耐心等待我的基本问题。
【问题讨论】:
标签: grails