2016-10-02 140 views
0

我在節點使用Sequelize,並有一個表名UserAuthSequelize:創建一對多關係

User 
    id 
    name 

Auth: 
    id 
    token 

我想關係添加到這個模型。

A User可以有許多Auth's,to-manyAuth的關係。

一個Auth只能有一個User,to-oneUser的關係。

我在我的模型文件一個類的實例,我創建使用下面的代碼的關係:

tableName: 'User', 
      classMethods: { 
       associate: function (models) { 
        user.belongsToMany(user, { through: { model: models.auth }, as: `user` }) 
       } 

這段代碼在Auth產生一個電場,稱爲userId

我所希望得到的是以下幾點:

User 
    id 
    name 
    auths //an array that will contain all instances of Auth by this User 

Auth: 
    id 
    token 
    user //an object of User to whom this Auth object belongs to 

我在做什麼錯?

回答

1

試試這個:

var User = sequelize.define('User', { 
    ... 
    classMethods: { 
     associate: function (models) { 
      User.hasMany(models.Auth, {as: 'auths'}); 
     } 
    } 
}; 


var Auth = sequelize.define('Auth', { 
    ... 
    classMethods: { 
     associate: function (models) { 
      Auth.belongsTo(models.User, {as: 'user'}); 
     } 
    } 
}; 

這將添加一個userId列到auth表。

要查詢它,你會做(注意:在查詢的include),您也可以做到這一點,反之亦然:

User.findOne({ 
    include: [Auth] 
}) 

你可能要檢查的sequelize文檔的one-to-manyhasOne關係和hasManyhasOne API以獲取更多信息。

+0

謝謝。我如何取回所有與'User'關聯的'Auth'記錄的數組? 「用戶」表不應該有一個名爲「Auths」的字段? – user1107173

+1

你只需要在一張表中引用,而不是在查詢中,你會告訴它包括第二個模型。我也爲我的帖子添加了一個查詢示例。 – user3254198