使用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 = 酒吧 } )
// => “未捕获的错误:尚不支持”
})