如何在Objection.js中为具有不同类别的喜欢实现继承?

时间:2018-11-12 17:22:49

标签: javascript postgresql database-design objection.js

我正在尝试使用Objection.js实现数据库设计,但是我不知道如何定义具有互斥的多个类别的继承关系。

有问题的情况如下:我想对帖子,评论和回复实施赞。据我所知,“最可扩展的解决方案是只具有一个“基础”表,并从其“继承”所有其他表。”如另一个SO问题中所述。想法是将“赞”链接到一个实体,并使一个实体成为帖子,评论或另一个实体。

User
id PK int
name string

Entity
id PK int

Like
userId int Fk >- User.id
entityId int Fk >- Entity.id

Article
id PK int Fk >- Entity.id
author int FK >- User.id
title string
text string

Comment
id PK int Fk >- Entity.id
articleId int FK >- Article.id
authorId int FK >- User.id
text string

--There can be more entities like reply, image, etc

在Objection.js中,您实现了如下关系:

class Entity extends Model {
  static tableName = 'entities';

  static relationMappings = {
    Post: {
      relation: Model.HasOneRelation,
      modelClass: Like,
      join: {
          from: 'post.id',
          to: 'like.postId'
      }
    }
  }
}

但是,如果我不知道如何定义它,也可以发表评论或回复。不只是帖子。

是否可以存档?如果没有,我应该使用另一个JS库吗?我是否应该更改架构以使其与Objection.js一起使用?

相关链接:

Implementing Comments and Likes in database

http://vincit.github.io/objection.js/#relations

0 个答案:

没有答案