2017-07-08 94 views
1

我有一個場景,我試圖從一個多對多關係的表中刪除一條記錄,以及結點中匹配的recordId(通過)表連接我的兩個表。我知道有setget方法創建一個表的記錄,然後在through表中自動創建關係,但有沒有方法delete續集 - 通過表破壞與多對多關係的記錄

這裏的關係是:

用戶

User.belongsToMany(db.Organization, { through: 'organization_member', foreignKey: 'user_id'}) 

組織

Organization.belongsToMany(db.User, { through: 'organization_member', foreignKey: 'organization_id'}) 

注意兩個外鍵的的別名通過Sequelize駱駝情況下這就是爲什麼錯誤信息不同於協會中提到的專欄。

而我試圖在user表上使用destroy命令,其中任何用戶都與當前用戶會話關聯的組織關聯。不幸的是,以下命令不起作用,因爲user表中不存在organization_id,但organization_member接點表不存在。誰能幫忙?

deleteUsers: function(organizationId, t){ 
     console.log("Step 10: Delete Users"); 
     //DELETE users 
     return models.User.destroy({ 
      where: { 
       organizationId: organizationId 
      } 
     },{ transaction: t }) 
    } 

錯誤:

{ [SequelizeDatabaseError: column "organizationId" does not exist] 

回答

0

你有兩個問題

1)你想刪除的組織ID的用戶,但用戶不具有organization_id列, organization_member表具有該列。您是否試圖刪除用戶和組織的關聯,或者您是否嘗試刪除該用戶?

2)你正在爲列名爭奪Sequelize。我認爲你最好的選擇是將Sequelize配置爲對所有外鍵使用下劃線或駝峯大小寫。這樣你就不必擔心總是過度裁決。

這裏是我的配置:

​​
+0

感謝您的回答。 1)Both。我試圖刪除關聯,然後這些用戶成爲已刪除關聯的一部分。此方法是從我的應用程序中刪除帳戶的較大操作鏈中的一部分。 2)良好的通話。 – cphill