2017-07-19 78 views
1

我試圖讓我的應用程序使用sequelize將其種子到PostgreSQL數據庫中,以此獲得一些默認數據。到目前爲止,我只找到了一種方法來做到這一點,這並不理想。具有多對多關係的Sequelize中的種子數據

我的主要問題是,如果有人在這裏知道「最佳實踐」的方式來做到這一點。

到目前爲止,我已經嘗試過使用種子,在同步每個模型後注入默認信息,最後我又回到了需要定義如何在主app.js文件中的models.sequelize.sync()之後注入默認信息的文件。

播種:這個方法似乎做得比轉儲數據到數據庫中,協會,即​​classmethods,(據我所知)更當土崩瓦解在這裏不能使用,這使得更新許多一對多的關係幾乎不可能。

模型定義:注入默認信息和關聯到模型中的問題是,您必須以某種方式將其他模型定義導入到模型中,我似乎無法正確工作。

在這一點上,我挑選不同代碼的方式並不是那麼有趣,就像我在尋求什麼樣的想法/知道是獲取具有關聯到數據庫中的默認數據的最佳方式。看起來這將是一個更受歡迎的問題,因爲幾乎每個應用程序都附帶至少幾條默認信息。我很想被告知我完全忽略了一些事情,而且其實很簡單:)

感謝您提前討論。

+0

更多的例子你有協會模型已經定義或您想創建新的關聯? – AbhinavD

+0

我已經在模型中定義了工作關聯。 – joshrathke

+0

我想我的主要問題是人們如何處理更復雜的播種場景。例如,我正在爲將要安裝在樹莓派上的應用程序開發一個用戶/用戶角色系統,所以我需要能夠快速地將需要關聯到用戶權限的幾個用戶角色種子。我不能在板載種子過程中發生這種情況。 – joshrathke

回答

0

如果我們已經定義了模型關聯,我們不需要做任何額外的事情。讓我們舉一個例子,醫生可以有一個以上的專業。在模型定義中,我們可以定義我們的關聯。現在

classMethods: { 
     associate: function (models) { 
     models.doctor.hasMany(models.specialty, {foreignKey: 'doctor_npi'}); 
     } 

我們可以創建一個插入功能,並從播種

insertDoctor: function (models, firstname, lastname, specialties) { 
     return this.create({ 
      firstname: firstname, 
      lastname: lastname, 
      specialties: specialties, 
     }, { 
      include: [models.specialty], 
     }); 
     } 

調用與正確的參數應該工作這個函數調用它。

裏有official documentation

+0

對,但是通過連接表的多對多關聯怎麼辦?通常我會使用SetSpecialities()函數,但它在種子中不可用。 – joshrathke

相關問題