使用persistence.js,我有两个实体(Foo,Bar)形成多对多关系(N:M)。到目前为止,我只能让它添加许多“在一个方向上”,即 Foo 的一个实例可以添加许多 Bars,但是在这种关系中使用的任何 Bar 实例都不能反过来有许多 Foos。但是任何新的 Bar 实例都可以再次拥有许多 Foo。是否有可能,如果可以,如何“双向”添加许多实体?还是我必须像在 RDB 中那样使用联结表(N:M => 1:NM:1)?
var foo0, foo1, foo2, bar0, bar1, bar2 Foo = persistence.define('Foo', { val: 'TEXT' } ) Bar = persistence.define('Bar', { val: 'TEXT' } ) Foo.hasMany('bars', Bar, 'foo') Bar.hasMany('foos', Foo, 'bar') 持久性.store.memory.config(持久性); 持久性.schemaSync(); foo0 = new Foo( { val : 'foo0' } ) foo1 = new Foo( { val : 'foo1' } ) foo2 = new Foo( { val : 'foo2' } ) bar0 = new Bar( { val : 'bar0' } ) bar1 = new Bar({ val : 'bar1' } ) bar2 = new Bar( { val : 'bar2' } ) foo1.bars.add(bar0) foo2.bars.add( bar0 ) // 注意:已经用上面的语句添加到 DB => 什么都不做 foo2.bars.add(bar1) bar1.foos.add( foo0 ) bar2.foos.add( foo0 ) // 注意:已经用上面的语句添加到 DB => 什么都不做 bar2.foos.add( foo1 ) 持久性.flush(函数(){ Foo.all().each( 函数 ( foo ) { foo.bars.list(函数(酒吧){ console.log("Foo" + foo.val +":") _.each(bars, function (bar) { console.log(bar.val) }) }) }) Bar.all().each( 函数 ( bar ) { bar.foos.list( 函数 ( foos ) { console.log("Bar" + bar.val +":") _.each( foos, function ( foo ) { console.log( foo.val ) } ) }) }) Bar.all().list( 函数 ( 酒吧 ) { foo0.bars = 酒吧 } ) // => “未捕获的错误:尚不支持” })