【发布时间】:2017-04-11 01:04:30
【问题描述】:
我有一个包含公告和用户的数据库。
用户可以创建多个公告,而一个公告只能由一个用户创建。
为了使用 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”。
那么我做错了什么?
【问题讨论】:
标签: mysql database foreign-keys associations sequelize.js