保存js和Sequelize,没有关联添加到数据库

时间:2015-10-10 10:04:25

标签: postgresql associations sails.js sequelize.js

这就是我的模型在帆中的结构:

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

1 个答案:

答案 0 :(得分:1)

除非您将createdAt选项设置为false,否则默认情况下会添加updatedAttimestamps列。请参阅docs

要添加外键约束,您需要为角色模型定义associations