在 sequelize.js 中设置列​​顺序

Set column order in sequelize.js

我想在时间戳之前放置 user_id 列,我该如何告诉 sequelize.define

sequelize.define('UserPassport', {
    method: DataType.STRING,
    token:  DataType.STRING,
    social_id: DataType.STRING
  }, {
    classMethods: {
      associate: function(models) {
        UserPassport.belongsTo(models.User);
      }
    },
    tableName:   'user_passports',
    underscored: true
  });

table 的架构:

CREATE TABLE `user_passports` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `method` varchar(255) DEFAULT NULL,
      `token` varchar(255) DEFAULT NULL,
      `social_id` varchar(255) DEFAULT NULL,
      `created_at` datetime NOT NULL,
      `updated_at` datetime NOT NULL,
      `user_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `user_id` (`user_id`),
      CONSTRAINT `user_passports_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

P.S: 是否可以从 methodsocial_id 中创建一个复合键,以便它们都可以组成 PK 而不是 id 字段。

您需要做的就是将它添加到 define 阶段中您想要的任何位置,如下所示:

var user_passport = sequelize.define('user_passport', {
    method: DataTypes.STRING,
    token: DataTypes.STRING,
    social_id: DataTypes.STRING,
    user_id: DataTypes.INTEGER
}, {
    classMethods: {
        associate: function(models) {
            user_passport.belongsTo(models.User, { foreignKey: 'user_id' });
        }
    },
    tableName: 'user_passports',
    underscored: true
});

并在 associate 中附加对字段的引用:

user_passport.belongsTo(models.settings, { foreignKey: 'user_id' });