2017-04-10 7 views
0

私はアナウンスとユーザーを含むデータベースを持っています。1:m関連でduplicated foreignKeyを続ける

ユーザーは多くのアナウンスを作成できますが、アナウンスは1人のユーザーのみ作成できます。

が、私はこれをしなかった、この使用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; 
} 

ユーザーモデル:私は重複ユーザーIDを見つける

'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; 
}; 

アプリを実行した後(OwnerIdにとuserId)をアナウンスデータベースに追加します。 「所有者ID」は1つだけでなければなりません。

私は間違ったことは何ですか?

答えて

0

私は問題を発見しました:私は "foreignKey"のスペルを間違えて "foreingKey"と書いていました。今はすべてOKです

関連する問題