【发布时间】:2021-06-09 09:34:52
【问题描述】:
我正在创建一个 MERN 应用程序,其中有多个用户并且每个用户都指定了他们的特定角色。一个用户还可以在两个不同的场景中同时拥有两个角色。
场景:一个用户可以有多个站点,一个站点可以有多个用户。创建站点 (site1) 的用户 (user1) 将是 Owner 并且能够在站点 (site1) 上执行 CRUD 操作,但是当 Owner 邀请另一个用户 (user2) 到站点时,新的user(user2) 是该站点(site1) 的Editor,他只能读取和更新站点(site1)。
同样,如果第二个用户(user2)创建了另一个站点(site2),他就是这个站点(site2)的Owner和site1的Editor。
因此,基本上用户将是他自己创建的网站的所有者,并且将是所有者与他共享的网站的编辑者。他是自己网站的Owner 和共享给他的网站的Editor。我不太确定理想的架构设计应该是什么。
到目前为止我创建的两个架构User 和Site:
用户架构
const UserSchema = new mongoose.Schema({
name: {type: String},
email: {type: String},
sites: [{ site: { type: mongoose.Schema.Types.ObjectId, ref: 'Site' },
siteRole: { type: String } }
]})
module.exports = mongoose.model('User', UserSchema)
站点架构
const SiteSchema = new mongoose.Schema({
name: { type: String },
url: { type: String },
users: [{ site: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
siteRole: { type: String } }
]})
})
module.exports = mongoose.model('Site', SiteSchema)
角色 1:Owner:可以Create、Read、Update、Delete 和 Invite an editor 一个站点。
角色2:Editor:只能Read、Update一个站点。
【问题讨论】:
标签: node.js mongodb express mongoose database-design