Javascript 如何在Spine.js中为这种关系建模
在我的应用程序中,我需要对对象之间的关系建模,这种关系非常类似于文件系统 我有Javascript 如何在Spine.js中为这种关系建模,javascript,model-view-controller,spine.js,Javascript,Model View Controller,Spine.js,在我的应用程序中,我需要对对象之间的关系建模,这种关系非常类似于文件系统 我有图像,视频和收藏 集合可以包含所有这三种类型的对象。 虽然图像和视频可以是多个集合的一部分,但集合只能包含在一(1)个集合中 在脊柱中建立这种关系的最佳方式是什么 我想做的是从一个通用的模型定义,比方说资产,把所有的东西都变成子类 所以一切都是一种资产,我可以在该模型上实现类和实例方法,所有子类模型定义都继承这些方法 我在使用这种方法时遇到的问题是,我需要/希望将这种关系置于资产之上 class Asset exten
图像
,视频
和收藏
集合可以包含所有这三种类型的对象。
虽然图像和视频可以是多个集合的一部分,但集合只能包含在一(1)个集合中
在脊柱中建立这种关系的最佳方式是什么
我想做的是从一个通用的模型定义,比方说资产,把所有的东西都变成子类
所以一切都是一种资产,我可以在该模型上实现类和实例方法,所有子类模型定义都继承这些方法
我在使用这种方法时遇到的问题是,我需要/希望将这种关系置于资产之上
class Asset extends Spine.Model
@configure 'Asset', 'title', 'description'
@belongsTo 'collection', Collection
类资产扩展Spine.Model
@配置“资产”、“标题”、“说明”
@属于“收藏”,收藏
此外,如果我有Collection子类Asset和Asset设置了对Collection的引用,我不确定这是否真的有效。。。
这里的问题是,belongsTo是单向关系,我只需要对集合使用它
因此,正确的方法是让@拥有多个“集合”,集合,并确保没有集合将多个对象设置到此属性
另一个问题是:我可以使用Asset.find(id)来获取属于Asset子类的所有对象吗 我不太确定你的问题是什么,只是想试试你的上述结构是否有效
您所描述的被称为“复合设计模式”()其中,Collection
是“复合”,而Image
和Video
都是“叶子”
关于您的@hasMany
问题,除了您已经定义的资产
代码之外,您是否希望在您的集合
子类上使用以下内容而不是@hasMany“collections”,Collection
:
@有许多“资产”,资产
因为你可以在树上来回移动
同样,我真的不确定这种递归遍历在Spine中是否有效(尽管我广泛使用Spine,但从未尝试过)
嗯一些,,
Geert Jan我不太确定你的问题是什么,只是尝试一下你的上述结构是否有效
您所描述的被称为“复合设计模式”()其中,Collection
是“复合”,而Image
和Video
都是“叶子”
关于您的@hasMany
问题,除了您已经定义的资产
代码之外,您是否希望在您的集合
子类上使用以下内容而不是@hasMany“collections”,Collection
:
@有许多“资产”,资产
因为你可以在树上来回移动
同样,我真的不确定这种递归遍历在Spine中是否有效(尽管我广泛使用Spine,但从未尝试过)
嗯一些,,
Geert Jan是的,复合模式正是我试图实现的。我在子类化/扩展资产模型(Spine.model
)时遇到了问题,因为它没有通过简单的子类化来带来所有属性。。。我必须在模型定义中执行@extend Asset
。我遇到的另一个问题是,我试图将关系(belongsTo或hasMany)放到资产上的集合中,但在这里,我遇到了另一个无法解决的错误(可能是因为集合是asset的一个子类,但我不知道。不确定您对@hasMany'assets',asset
的建议是什么,您的意思是我应该为资产和集合实现一个hasMany?好吧,构建复合模式(同样,您必须亲自检查一下这种递归的东西在Spine中是否有效)您将拥有:1)@属于资产上的“收藏”、“收藏”
,2)@拥有许多“资产”,资产资产上的。这些定义应该放在一起,因为它们构成了资产
和集合
之间双向关系的两面。这使得集合
可以拥有许多资产
,其中包括图像
和视频
,但也可以使用集合
,允许任意深度嵌套的集合,例如:col1>colb>colc>videoA
ok。问题还在于,视频和图像可以是部分或多个集合,而不仅仅是一个集合,但这不是问题所在。我会想办法的。非常感谢。是的,复合模式就是我想要实现的。我在子类化/扩展资产模型(Spine.model
)时遇到了问题,因为它没有通过简单的子类化来带来所有属性。。。我必须在模型定义中执行@extend Asset
。我遇到的另一个问题是,我试图将关系(belongsTo或hasMany)放到资产上的集合中,但在这里,我遇到了另一个无法解决的错误(可能是因为集合是asset的一个子类,但我不知道。不确定您对@hasMany'assets',asset
的建议是什么,您的意思是我应该为资产和集合实现一个hasMany?好吧,构建复合模式(同样,您必须亲自检查一下这种递归的东西在Spine中是否有效)您将拥有:1)@属于资产上的“收藏”、“收藏”
,2)@拥有许多“资产”,资产资产上的。这些定义应该放在一起,因为它们构成了资产
和集合
之间双向关系的两面。这使得集合
可以拥有许多资产
,其中包括图像
和视频
,但也可以使用集合
,允许任意深度嵌套的集合,例如:col1>colb>colc>videoA
ok。还有一件事是我和一个视频