Как создать модель JSON из возражения. js? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть модель уведомлений, которая имеет два отношения к себе и другое отношение с моделью агента.

Я хочу создать (вручную) JSON данные, соответствующие этой модели, чтобы вставить их в таблица NOTIFICATION.

Вот моя модель уведомления.

import { Model } from 'objection';
import Agent from './Agent';
import Traduction from './Traduction';


export default class Notification extends Model {
  static get tableName() {
    return 'NOTIFICATION';
  }

  readonly id!: number;
  id_agent: number;
  id_parent?: number;
  parent_titre: string;
  code_titre: string;
  nombre?: number;

  Agent?: Agent;
  Parent?: Notification;
  Child?: Notification[];

  static get relationMappings() {
    return {
      Agent: {
        modelClass: Agent,
        relation: Model.HasOneRelation,
        join: {
          from: 'NOTIFICATION.id',
          to: 'AGENT.id'
        }
      },
      Parent: {
        modelClass: Notification,
        relation: Model.HasOneRelation,
        join: {
          from: 'NOTIFICATION.id_parent',
          to: 'NOTIFICATION.id'
        }
      },
      Child: {
        modelClass: Notification,
        relation: Model.HasManyRelation,
        join: {
          from: 'NOTIFICATION.id',
          to: 'NOTIFICATION.id_parent'
        }
      }
    };
  }
}


Вот у меня модель агента:

import Individu from '../Personne/Individu';
import { Model } from 'objection';
import MembreService from './MembreService';

export default class Agent extends Model {
  static get tableName() {
    return 'AGENT';
  }

  readonly id!: number;
  utilisateur: boolean = false;
  login?: string;
  password?: string;
  periode_debut?: Date;
  periode_fin?: Date;
  actif: boolean = true;
  token?: string;

  id_individu: number;

  Individu?: Individu;
  MembreServices?: MembreService[];

  static get relationMappings() {
    return {
      Individu: {
        modelClass: Individu,
        relation: Model.BelongsToOneRelation,
        join: {
          from: 'AGENT.id',
          to: 'INDIVIDU.id'
        }
      },
      MembreServices: {
        modelClass: MembreService,
        relation: Model.HasManyRelation,
        join: {
          from: 'AGENT.id',
          to: 'MEMBRE_SERVICE.id_agent'
        }
      }
    };
  }
}

А вот код, создающий таблицу NOTIFICATION .

 knex.schema.hasTable('NOTIFICATION').then(function(exists) {
    if (!exists) {
      return knex.schema.createTable('NOTIFICATION', table => {
        table.bigIncrements('id').primary();
        table.bigInteger('id_agent').unsigned().notNullable().references('id').inTable('AGENT');
        table.bigInteger('id_parent').unsigned().references('id').inTable('NOTIFICATION');
        table.string('parent_titre', 45).notNullable();
        table.string('code_titre', 45).notNullable();
        table.integer('nombre').nullable();
      });
    }
  });
}
...