persistence.jsを使用すると、多対多の関係 (N:M) を形成する 2 つのエンティティ (Foo、Bar) があります。これまでのところ、多くの「一方向」を追加することしかできませんでした。つまり、Foo の 1 つのインスタンスは多くの Bar を追加できますが、この関係で使用される Bar のインスタンスは、多くの Foo を持つことはできません。しかし、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( 'バー', バー, 'foo' )
Bar.hasMany( 'foos', Foo, 'bar' )
persistence.store.memory.config(持続性);
persistence.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( バー 0 )
foo2.bars.add( bar0 ) // 注: 上記のステートメントで DB に既に追加されている => 何もしない
foo2.bars.add( バー 1 )
bar1.foos.add( foo0 )
bar2.foos.add( foo0 ) // 注: 上記のステートメントで DB に既に追加されている => 何もしない
bar2.foos.add( foo1 )
persistence.flush( 関数 () {
Foo.all().each( 関数 ( foo ) {
foo.bars.list( 関数 (バー) {
console.log( "Foo " + foo.val + ": " )
_.each( バー、関数 (バー) { console.log( バー.val ) } )
} )
} )
Bar.all().each( 関数 ( バー ) {
bar.foos.list( 関数 ( foos ) {
console.log( "Bar " + bar.val + ": " )
_.each( foos, function ( foo ) { console.log( foo.val ) } )
} )
} )
Bar.all().list( 関数 ( バー ) { foo0.バー = バー } )
// => "キャッチされていないエラー: まだサポートされていません"
} )