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

时间:2015-02-12 05:14:17

标签: sails.js waterline

此问题可能与sails.js waterline中的数据库架构设计有关。

一项任务需要记录用户的不同角色。例如,Task需要知道此任务中的fooUsersbarUsers是谁。处理这个问题的最佳方法是什么? (foo和bar是用户的不同角色)

更多上下文

  • User将有不同的Role
  • 用户的角色将来可能会发生变化。
  • User只有一个Role只有一个Task
  • 特定RoleUser的{​​{1}}永远不会改变。
  • Task会涉及很多用户。
  • 所有任务都是 SAME 类型。
  • 角色总数不会改变。

例如:

一项任务有四个用户:Task UserARole1 UserBRole2 UserCRole3UserD

将来,Role1可能会UserARole2。但是不会影响Role3在上述任务中的作用。

我的最终设计

UserA

我经常更新这个问题。以上是我的最终设计。请给我一些反馈,无论这是好还是坏,有没有更好的设计模式?

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

// User.js

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

// Task.js

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