这就是我的模型在帆中的结构:
myapp
--api
----controllers
----models
-----User.js
------Role.js
user.js的
module.exports = {
attributes:{
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
username: {
type: Sequelize.STRING,
},
password: {
type: Sequelize.STRING,
}
},
associations: function() {
User.hasOne(Role, {foreignKey: 'id', as: 'role' });
}
};
Role.js
module.exports = {
attributes:{
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING,
}
}
};
在sails提升之后,在postgresql中我有用户表,其中包含id,username,password,createdat和updatedat + roles表,其中包含id,name,createdat和updatedat。用户表中的角色没有foreignKey。
我如何解决这个问题? 我使用sails-hook-sequelize和sails-hook-sequelize-blueprints,是否会因为它们而发生?
谢谢!
正确的方法是:
module.exports = {
attributes:{
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
username: {
type: Sequelize.STRING,
},
password: {
type: Sequelize.STRING,
}
},
associations: function() {
User.hasOne(Role, {
as : 'role',
foreignKey: {
name: 'roleId',
allowNull: false
}
});
}
};
答案 0 :(得分:1)
除非您将createdAt
选项设置为false,否则默认情况下会添加updatedAt
和timestamps
列。请参阅docs。
要添加外键约束,您需要为角色模型定义associations。