如何在Spine.js中建模这种关系

时间:2012-05-30 18:36:10

标签: javascript model-view-controller spine.js

在我的应用程序中,我需要建模与文件系统非常相似的对象之间的关系。

我有ImageVideoCollection

集合可以包含所有三种类型的对象。 虽然图像和视频可以是多个集合的一部分,但集合只能包含在一个集合中。

在脊柱中模拟这种关系的最佳方法是什么?

我想做的是从一个通用模型定义中创建所有子类,比如说Asset 所以一切都是资产,我可以在该模型上实现类和实例方法,所有子类模型定义都继承这些方法。

我遇到的这种方法的问题是我需要/喜欢把关系置于资产所以

class Asset extends Spine.Model
    @configure 'Asset', 'title', 'description'

    @belongsTo 'collection', Collection

除了我不确定这是否真的有效,如果我有Colletion子类Asset和asset设置对Collection的引用... 这里的问题是belongsTo是单向关系,我只需要集合 所以正确的方法是拥有@hasMany 'collections', Collection并确保没有集合为此属性设置多个对象

另一个问题是:我可以使用Asset.find(id)来获取属于Asset子类的所有对象吗?

1 个答案:

答案 0 :(得分:1)

我不确定你的问题是什么,除了尝试你的上述结构是否有效。

您所描述的内容被称为“复合设计模式”(http://en.wikipedia.org/wiki/Composite_pattern),其中Collection是'复合',ImageVideo都是'叶子'

关于您的@hasMany问题,除了您已定义的@hasMany 'collections', Collection代码之外,您不希望Collection子类上的Asset代替@hasMany 'assets', Asset

{{1}}

鉴于你可以在树上上下移动。

同样,我真的不确定这种递归遍历是否适用于Spine(从未尝试过,尽管我广泛使用Spine)

有些人, 吉尔特-扬