【问题标题】:Is it possible to use inheritance in Foxx models?是否可以在 Foxx 模型中使用继承?
【发布时间】:2016-03-29 22:24:11
【问题描述】:

我正在使用 ArangoDB 和 Foxx 开发一个 REST API。在多个模型中不断出现的模式如下:

const NewAccount = Foxx.Model.extend({
schema: {
    name: Joi.string().required(),
    ... multiple properties
}});

当我将模型存储在数据库中时,我想添加诸如创建时间戳、帐户状态等属性。

const Account = Foxx.Model.extend({
schema: {
    name: Joi.string().required(),
    ... multiple properties,
    created: Joi.number().integer().required().default(Date.now, 'Current date'),
    status: Joi.number().integer().required()
}});

问题: 有没有办法让 Account 模型继承 NewAccount 模型的所有属性,所以我只需要定义 created状态 属性?

其次,是否有一种有效且简单的方法可以将 NewAccount 实例中的所有属性复制到 Account 实例中?

【问题讨论】:

    标签: arangodb foxx


    【解决方案1】:

    没有直接支持通过继承扩展模式。但是模式只是对象,因此您可以像任何其他对象一样扩展它们,例如使用_.extend

    var _ = require('underscore');
    var baseAccountSchema = {
      // ...
    };
    var extendedAccountSchema = _.extend({}, baseAccountSchema, {
      // ...
    });
    var NewAccount = Foxx.Model.extend({
      schema: baseAccountSchema
    });
    var Account = Foxx.Model.extend({
      schema: extendedAccountSchema
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 2012-01-20
      • 2011-11-14
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多