У меня есть внешняя библиотека ( Objection.js ), которую я использую в своем приложении Node.js. Я создал класс базовой модели, который расширяет класс Objection Model
для моих моделей сущностей:
const { Model } = require('objection')
class ModelBase extends Model {
// implementation not important for this question
}
В моих модельных классах, которые расширяют мою базу, бывают моменты, особенно при кодировании relationMappings
, когда мне приходится обращаться к свойствам / перечислениям в Model
базовом классе. Я мог бы сделать это в моих расширенных моделях следующим образом:
const ModelBase = require('./model-base')
class SomeModel extends ModelBase {
static get relationMappings () {
const SomeOtherModel = require('./some-other-model')
return {
someOtherModel: {
relation: ModelBase.BelongsToOneRelation,
modelClass: SomeOtherModel,
// etc.
}
}
}
}
Обратите внимание на строку relation: ModelBase.BelongsToOneRelation
. Это работает, но я думаю, что это вводит в заблуждение, поскольку BelongsToOneRelation
НЕ является членом ModelBase
. Что кажется мне более ясным и правильным, так это импортировать / требовать Model
от возражения, чтобы я мог получить доступ к BelongsToOneRelation
оттуда, например:
const { Model } = require('objection')
// other code just like above until the relationMappings...
relation: Model.BelongsToOneRelation
Я предпочитаю такой подход. Не вызовет ли это проблем, таких как контуры require или версия циклической зависимости JavaScript, если я импортирую / мне потребуется класс, который уже находится в области видимости в цепочке наследования?