2017-04-10 16 views
0

我有一個包含公告和用戶的數據庫。在1:m關聯上重複複製foreignKey

用戶可以創建很多通知,而通知僅由一個用戶創建。

來定義這個使用sequelize我這樣做:

的公告型號:

'use strict'; 
module.exports = function (sequelize, DataTypes) { 
    var announcement = sequelize.define('announcements', { 
     id: { 
      type: DataTypes.INTEGER, 
      primaryKey: true, 
      autoIncrement: true 
     }, 
     title: DataTypes.STRING, 
     description: DataTypes.TEXT, 
     likes: DataTypes.INTEGER 
    }, { 
     classMethods: { 
      associate: function (models) { 
       /** 
       * an announcement is created by only one user 
       */ 
       announcement.belongsTo(models.users, { 
        as: 'Owner' 
       }); 
      } 
     } 
    }); 
    return announcement; 
} 

用戶模式:

'use strict'; 
module.exports = function (sequelize, DataTypes) { 
    var users = sequelize.define('users', { 
     id: { 
      type: DataTypes.INTEGER, 
      primaryKey: true 
     }, 
     username: { 
      type: DataTypes.STRING, 
      unique: true 
     }, 
     email: { 
      type: DataTypes.STRING, 
      unique: true, 
      validate: { 
      isEmail: true 
      } 
     } 
    }, { 
     timestamps: true, 
     classMethods: { 
      associate: function (models) { 
       /** 
       * a user has many announcements 
       */ 
       users.hasMany(models.announcements, { 
        as: 'Announcements', 
        foreingKey: { 
         name: 'id', 
         allowNull: false 
        } 
       }); 
      } 
     } 
    }); 
    return users; 
}; 

運行的應用程序後,我發現重複的用戶ID(OWNERID和公告數據庫中的userId)。它必須只有一個'OwnerId'。

那麼我做錯了什麼?

回答

0

我發現問題:我拼錯了「foreignKey」,並將其寫爲「foreingKey」。現在一切正常