0
我試圖使用Seqelize和Postgresql將具有外鍵約束的user_id列添加到Node Express中的Todo表。 我收到一條錯誤消息,說「未處理的拒絕SequelizeDatabaseError:列」UserId「不存在」。正如你所看到的,SELECT查詢中有「userId」和「UserId」。 使用Sequelize中的遷移添加具有外鍵約束的表列使用Sequelize中的遷移
SELECT查詢由簡單的Todo.findAll()構建。 我相信這件事情錯在我如何遷移文件20161116202040 - 添加用戶ID到todos.js
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn(
'Todos',
'userId', {
type: Sequelize.INTEGER,
references: {
model: 'Users',
key: 'id'}})},
的模型/ user.js的看起來像這樣創建外鍵約束上:
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
email: DataTypes.STRING,
password: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
User.hasMany(models.Todo);}}});
return User;};
模型/ todo.js看起來是這樣的:
module.exports = function(sequelize, DataTypes) {
var Todo = sequelize.define('Todo', {
name: DataTypes.STRING,
userId: DataTypes.INTEGER
},{
classMethods: {
associate: function(models) {
Todo.belongsTo(models.User); }}});
return Todo;};
謝謝。我想到了。在我看來,你還必須添加ForeignKey:「userId」User.hasMany調用權? – Andreas