2016-12-12 6 views
0

リプレイスメントの関係について少し混乱しています。sequelizejsリレーション/アソシエーション、hasMany/belongsTo vs定義モデルのリファレンス

を行うのは同じです:

var User = this.sequelize.define('user', {/* attributes */}), 
Company = this.sequelize.define('company', {/* attributes */}); 

User.belongsTo(Company); 

行うこと:

var User = this.sequelize.define('user', { 
    company_id : { 
     references: { 
      model: 'Company' 
      key: id 
     } 
    } 
    /* more attributes */ 
}), 
Company = this.sequelize.define('company', {/* attributes */}); 

は違い何ですか?明らかに2つのコードは結果と同じテーブルを行い、ユーザテーブルでcompanyId外部キーがCompanyに追加されます。

ありがとうございました!

答えて

0

これらは、同じ結果を達成するための異なる方法です。あなたのコードや特定のオプションに従っているパターンによっては、他のものよりも明確になることがあります。あなたの例では、前者が後者よりはるかにコンパクトであることに注意してください。

あなたの例にはバグがあります。最初はcompanyIdの外部キーになりますが、2番目の例ではcompany_idを使用します。キャメルケースの代わりに下線付きの表名と列名を使用する場合は、Sequelize.define()underscored: trueオプションを渡す必要があります。

+0

お返事ありがとうございます。私は強調したオプションや他のオプションについて読んだ。私はユーザーが複合主キー(belongsToMany)を作成する2番目のフォームは、pk/fkキーは、私のテーブルの最後の属性は、どのように属性の順序を置くことができますか? – codek

+0

私はそれが現時点では可能ではないと思いますが(それほど重要ではないので)、その機能を追加したい場合はコードが開いています:) – doublesharp

+0

もう一度ありがとうございます。参照オプション付きのモデルにattributteを追加し、参照されているhabléでclassMethodを使用するとbelongsToManyがattributte order problemを解決するように見えます。たぶんlitrosビットrebundant .. – codek

関連する問題