Как я могу реализовать наследование для лайков с разными категориями в Objection.js? - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь реализовать дизайн базы данных с помощью Objection.js, но я не знаю, как определить отношения наследования с несколькими категориями, которые являются взаимоисключающими.

Рассматриваемый случай выглядит следующим образом: я хочу реализовать лайки для постов, комментариев и ответов. Насколько я знаю, «самое расширяемое решение - иметь только одну« базовую »таблицу и« наследовать »от нее все остальные таблицы». как указано в другом вопросе ТАК. Идея состоит в том, чтобы связать подобное с сущностью, а сущность должна быть либо постом, комментарием, либо другой сущностью.

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?

Соответствующие ссылки:

Реализация комментариев и лайков в базе данных

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

...