Sails.js水线:用户、角色、任务模型,请给我一些关于最终模型设计的建议

Sails.js水线:用户、角色、任务模型,请给我一些关于最终模型设计的建议,sails.js,waterline,Sails.js,Waterline,这个问题可能与sails.js waterline中的数据库模式设计有关 一个任务需要记录用户的不同角色。例如,一个任务需要知道谁是该任务中的fooousers和barUsers。处理这个问题的最佳方法是什么?(foo和bar对于用户来说是不同的角色) 更多上下文 用户将具有不同的角色s 用户的角色将来可能会发生变化 一个用户在一个任务中只能有一个角色 特定任务中用户的角色永远不会改变 一个任务将涉及许多用户 所有任务都是相同的类型 角色总数不会更改 例如: 一个任务有四个用户:UserA带

这个问题可能与sails.js waterline中的数据库模式设计有关

一个任务需要记录用户的不同角色。例如,一个
任务
需要知道谁是该任务中的
fooousers
barUsers
。处理这个问题的最佳方法是什么?(foo和bar对于用户来说是不同的角色)

更多上下文
  • 用户
    将具有不同的
    角色
    s
  • 用户的角色将来可能会发生变化
  • 一个
    用户
    在一个
    任务
    中只能有一个
    角色
  • 特定
    任务
    用户
    角色
    永远不会改变
  • 一个
    任务
    将涉及许多用户
  • 所有任务都是相同的类型
  • 角色总数不会更改
例如:

一个任务有四个用户:
UserA
Role1
UserB
Role2
UserC
Role3
UserD
Role1

将来,
UserA
可能拥有
Role2
Role3
。但是,不会影响
UserA
在上述任务中的角色

我的最终设计
//User.js
属性:{
任务:{
集合:“任务”,
via:'用户'
},
角色:{
集合:“角色”,
via:'用户'
},
用户任务角色:{
集合:“userTaskRole”,
via:'用户'
}
}
//Task.js
属性:{
用户:{
集合:“用户”,
via:“任务”
},
用户任务角色:{
集合:“userTaskRole”,
via:‘任务’
}
}
//Role.js
属性:{
用户:{
集合:“用户”,
via:‘角色’
},
用户任务角色:{
集合:“userTaskRole”,
via:‘角色’
}
}
//UserTaskRole.js
属性:{
任务:{
模型:“任务”
},
用户:{
模型:“用户”
},
角色:{
模型:“角色”
}
}
我经常更新这个问题。以上是我的最终设计。请给我一些反馈,无论这是好是坏,有没有更好的设计模式


谢谢。

您需要为您的用例提供更多上下文。在不知道你为什么要做你想做的事情的情况下,我可以提供这个答案

在任务中使用列区分foo/bar,并在单个列中引用用户,如下所示:

// User.js

attributes:{
  tasks: {
    collection: "task",
    via: 'users'
  }
}

// Task.js

attributes: {
  Users: {
    collection: "user",
    via: "tasks"
  },
  type: {
    type: 'string',
    enum: ['foo','bar']
  }
}

我是新来的。对最后两条评论感到抱歉。我刚刚发现我甚至可以删除评论。我删除了它们。我已经更新了问题,并在问题末尾添加了更多上下文。希望你这次能理解我的情况。非常感谢您的帮助和回复。我再次更新了我的问题,并添加了我的两个模型设计。我期待着你的建议。非常感谢。在我的情况下,您当前的答案不起作用,因为任务无法区分用户是此任务中的哪个角色(foo或bar)。所有任务都是相同的类型。请检查问题中我的PS1和PS2以了解更多上下文。非常感谢你的帮助。