Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Persistence.js在两个方向上添加多对多_Javascript - Fatal编程技术网

Javascript Persistence.js在两个方向上添加多对多

Javascript Persistence.js在两个方向上添加多对多,javascript,Javascript,使用I有两个实体(Foo,Bar)形成多对多关系(N:M)。到目前为止,我只能让它在“一个方向”上添加许多,即一个Foo实例可以添加许多条,但在这种关系中使用的任何Bar实例都不能反过来有许多Foo。但任何新的酒吧实例都可能会再次出现许多食物。是否可能?如果可能,如何可能“在两个方向”添加许多实体?或者我必须使用RDB中的连接表(N:M=>1:nm1) 变量foo0,foo1,foo2,bar0,bar1,bar2 Foo=persistence.define('Foo',{val:'TEXT'

使用I有两个实体(Foo,Bar)形成多对多关系(N:M)。到目前为止,我只能让它在“一个方向”上添加许多,即一个Foo实例可以添加许多条,但在这种关系中使用的任何Bar实例都不能反过来有许多Foo。但任何新的酒吧实例都可能会再次出现许多食物。是否可能?如果可能,如何可能“在两个方向”添加许多实体?或者我必须使用RDB中的连接表(N:M=>1:nm1)

变量foo0,foo1,foo2,bar0,bar1,bar2 Foo=persistence.define('Foo',{val:'TEXT'}) Bar=persistence.define('Bar',{val:'TEXT'}) Foo.有很多('Bar',Bar',Foo') 酒吧有很多('foos',Foo',Bar') persistence.store.memory.config(persistence); persistence.schemaAsync(); foo0=新的Foo({val:'foo0'}) foo1=新的Foo({val:'foo1'}) foo2=新的Foo({val:'foo2'}) bar0=新条({val:'bar0'}) bar1=新条({val:'bar1'}) bar2=新条({val:'bar2'}) foo1.bar.add(bar0) foo2.bar.add(bar0)//注意:已经使用上面的=>语句添加到DB中,但不执行任何操作 foo2.bar.add(bar1) bar1.foos.add(foo0) bar2.foos.add(foo0)//注意:已使用上面的=>语句添加到DB中,但不执行任何操作 bar2.foos.add(foo1) persistence.flush(函数(){ Foo.all().each(函数(Foo){ foo.bar.list(功能条){ console.log(“Foo”+Foo.val+“:”) _.each(bar,函数(bar){console.log(bar.val)}) } ) } ) Bar.all().each(函数(Bar){ bar.foos.list(函数(foos){ console.log(“Bar”+Bar.val+:”) _.each(foos,函数(foo){console.log(foo.val)}) } ) } ) Bar.all().list(函数(Bar){foo0.Bar=Bar}) //=>“未捕获错误:尚不支持” } ) 一,。 反向属性必须相同

Foo.hasMany( 'bars', Bar, 'foos' ) Bar.hasMany( 'foos', Foo, 'bars' ) Foo.有很多('Bar',Bar,'foos')) 酒吧有很多('foos',Foo',bars') 二,。 每当一个实体添加另一个实体时,这两个实体都会插入到 数据库和自动交叉引用

foo0 = new Foo { val: 'foo0: not used at all' } foo1 = new Foo { val: 'foo1: has bar0, not added by others' } foo2 = new Foo { val: 'foo2: cross-add bar1' } foo3 = new Foo { val: 'foo3: adds bar1 again' } foo4 = new Foo { val: 'foo4: adds multiple' } foo5 = new Foo { val: 'foo5: added by bar4 only' } bar0 = new Bar { val: 'bar0' } bar1 = new Bar { val: 'bar1: cross-add foo2, used again in foo3' } bar2 = new Bar { val: 'bar2: added by foo4 #1' } bar3 = new Bar { val: 'bar3: added by foo4 #2' } bar4 = new Bar { val: 'bar4: added by foo4 #3, has foo5'} foo1.bars.add bar0 foo2.bars.add bar1 foo3.bars.add bar1 foo4.bars.add bar2 foo4.bars.add bar3 foo4.bars.add bar4 bar1.foos.add foo2 bar4.foos.add foo5 foo0=newfoo{val:'foo0:根本不使用'} foo1=newfoo{val:'foo1:hasbar0,不是由其他人添加的'} foo2=newfoo{val:'foo2:cross add bar1'} foo3=newfoo{val:'foo3:再次添加bar1'} foo4=新Foo{val:'foo4:添加多个'} foo5=新Foo{val:'foo5:仅由bar4添加'} bar0=新条{val:'bar0'} bar1=新条{val:'bar1:交叉添加foo2,在foo3'中再次使用} bar2=新条{val:'bar2:由foo4#1'添加} bar3=新条{val:'bar3:由foo4#2'添加} bar4=新条{val:'bar4:由foo4#3添加,具有foo5'} foo1.bar.add bar0 foo2.bar.add bar1 foo3.bar.add bar1 foo4.bar.add bar2 foo4.bar.add bar3 foo4.bar.add bar4 bar1.foos.add foo2 bar4.foos.add foo5 三,。 但是,当使用addAll()时,情况并非如此,它需要由持久性本身或另一个实体添加

foo4b = new Foo { val : 'foo4b: copies bars from foo4' } foo4.bars.list ( bars ) -> foo4b.bars.addAll bars persistence.add foo4b # choose one, # bar4.foos.add foo4b # either works foo4b=newfoo{val:'foo4b:从foo4'复制条形图} foo4.bar.list(条)-> foo4b.bar.addAll条 persistence.add foo4b#选择一个, #bar4.foos.add foo4b#任何一个都有效 foo4b = new Foo { val : 'foo4b: copies bars from foo4' } foo4.bars.list ( bars ) -> foo4b.bars.addAll bars persistence.add foo4b # choose one, # bar4.foos.add foo4b # either works