是否可以在 Foxx 模型中使用继承?
Is it possible to use inheritance in Foxx models?
我正在使用 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 和 status 属性?
其次,是否有一种有效且简单的方法可以将 NewAccount 实例中的所有属性复制到 Account 实例中?
不直接支持通过继承扩展架构。然而,模式只是对象,因此您可以像扩展任何其他对象一样扩展它们,例如使用 _.extend
:
var _ = require('underscore');
var baseAccountSchema = {
// ...
};
var extendedAccountSchema = _.extend({}, baseAccountSchema, {
// ...
});
var NewAccount = Foxx.Model.extend({
schema: baseAccountSchema
});
var Account = Foxx.Model.extend({
schema: extendedAccountSchema
});
我正在使用 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 和 status 属性?
其次,是否有一种有效且简单的方法可以将 NewAccount 实例中的所有属性复制到 Account 实例中?
不直接支持通过继承扩展架构。然而,模式只是对象,因此您可以像扩展任何其他对象一样扩展它们,例如使用 _.extend
:
var _ = require('underscore');
var baseAccountSchema = {
// ...
};
var extendedAccountSchema = _.extend({}, baseAccountSchema, {
// ...
});
var NewAccount = Foxx.Model.extend({
schema: baseAccountSchema
});
var Account = Foxx.Model.extend({
schema: extendedAccountSchema
});