恐怕我无法帮助您解决多对多关系,因为我目前正在尝试解决相同的问题,但就现有实例的一对多而言,您可以添加一个外键作为 hasMany、hasOne 和 belongsTo 函数中的可选参数(默认为 '{className}_id')。这些示例有点误导,因为它们暗示您必须显式地将项目添加到集合中,但实际上,关系是由外键定义的
class Parent extends Spine.Model
@configure 'Parent', 'id'
@hasMany 'children', 'Child', 'parent_id'
class Child extends Spine.Model
@configure 'Child', 'id', 'parent_id'
@belongsTo 'parent', 'Parent', 'parent_id'
parent = new Parent
child1 = new Child(parent_id: parent.id)
child2 = new Child(parent_id: parent.id)
@log parent.children().all() #[child1, child2]
@log child1.parent() is child2.parent() #true
据我所见,new Child(parent_id: parent.id)
并且parent.children().create()
相当于同一件事,但我对 SpineJS 很陌生,所以我很容易出错......
我认为已经有一些关于多对多关系的拉取请求,但 Alex MacCaw 迄今为止拒绝了它们(我相信他一般不喜欢关系的概念,并且正在考虑将它们从脊椎中删除)