2017-05-05 1 views
1

bookhelfをORMとしてnode.jsを使用しています。私はこの技術の深刻な初心者です。Node.js/Bookshelf - テーブルの複数の列が別のテーブルのIDを参照するマッピングモデル

データベーステーブルに複数の列がある状況があります。この質問のために、これらの列は 'sold_by_id'、 'signed_off_by_id'、 'lead_developer_id'という名前で、IDを持つUserテーブルを参照するすべての列です。

つまり、システム内の異なるユーザーは、必ずしも一意ではなく、3つの異なる役割に関連付けられます。今後

として、私はそのような方法で情報を取得できるようにする必要があります:私は周りに検索し、ドキュメントを読んでみましたが、私はまだこれを実現する方法について非常に不確かだ

let soldByLastName = JobTicket.soldBy.get('last_name'); 

。明らかに、以下はうまくいかず、2番目のパラメータはターゲットテーブル用であることを認識していますが、達成しようとしているものの概念を示しています。

// JobTicket.js 
soldBy: function() { 
    return this.belongsTo(User, 'sold_by_id'); 
}, 

signedOffBy: function() { 
    return this.belongsTo(User, 'signed_off_by_id'); 
}, 

leadDeveloper: function() { 
    return this.belongsTo(User, 'lead_developer_id'); 
} 

もちろん、私は、私は誰もが正しい方向に私を指すことができ、どこから始めればわからないUser.js

のメソッドの対応するセットが必要になります?

私はまったくばかですか?^_^

答えて

0

あなたの定義が正しいように見えます。私は他のモデルを参照するためRegistryプラグインを使用することをお勧めいたしますということのほかに

new JobTicket({ id: 33 }) 
    .fetch({ withRelated: [ 'soldBy', 'signedOffBy' ] }) 
    .then(jobTicket => { 
    console.log(jobTicket.related('soldBy').get('last_name'); 
    }); 

:それらを使用するために、それは次のようになります。これは、まだ読み込まれていないモデルを参照するという苦労を軽減します。

+1

非常に参考になりました。ドキュメントは、 'belongsTo'がどのように動作していたかについて私を混乱させました。乾杯!! :) :) – David

関連する問題