【发布时间】:2019-04-12 16:42:06
【问题描述】:
我有一个在我的 Node.js 应用程序中使用的外部库 (Objection.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 的成员。对我来说更明确和正确的是从 Objection 导入/要求 Model,这样我就可以从那里访问 BelongsToOneRelation,例如:
const { Model } = require('objection')
// other code just like above until the relationMappings...
relation: Model.BelongsToOneRelation
我更喜欢这种方法。如果我导入/需要一个已经在继承链范围内的类,它会导致问题,例如 require 循环或循环依赖的 JavaScript 版本吗?
【问题讨论】:
-
不,不会造成问题。 “已经在继承链的范围内”不是一回事,范围和继承是完全分开的。
-
好的,谢谢,既然你回答了,我应该删除我的问题吗?
-
经验法则:如果你认为其他人会有同样的问题,你可以留下来,否则删除是安全的。
标签: javascript inheritance objection.js