在NodeJS中如何通过相关的ORM库来实现MySQL的表继承关系?


我在Quota上问过( How do I implement a MySQL inheritance relations with a Node.js database ORM (like sequelizejs)? ),再这里重发一下,求有经验的各位指导下:

大体是这样的,最近在写个项目,做了下简单的表设计,其中的部分如下:
图片描述

(其中三个表共享id,id即是外键)之所以想这么弄的原因是,这个项目的内容主体是 project (不在上图中),而一个项目可以属于一个 app 也可以属于 user ,为了统一,我希望每个项目都有一个唯一全局的名称 namespace/project_name ,为了这个目的,我把 app user 抽象出一个父类,也就是 owner (或者直接换成namespace也可以),而且这样后续我通过这个唯一的项目名称查询的时候也不需要预先做判断这个 namespace 是应用还是用户。

但是在常见的这些 ORM 库中没有找到支持这么做的API,但是我又觉得这样得设计应该不是很少见,所以想知道大家一般是怎么处理的。

node.js mysql orm

消音君是个G 9 years, 8 months ago

实际上,你觉得这是「继承」关系,但本质上是「一对一单向映射」而已,所以只要用 Sequelize 的 hasOne 来建立联系即可:


 App.hasOne Owner
User.hasOne Owner

app_or_user.getOwner().then (owner) ->
  console.log owner.name

另外难道不是应该去 StackOverflow 么,去 Quota 干嘛。

Loxias answered 9 years, 8 months ago

Your Answer