代码之家  ›  专栏  ›  技术社区  ›  user2517182

怎样把续集骆驼案和蛇案混在一起?

  •  0
  • user2517182  · 技术社区  · 4 年前

    带下划线的模型配置似乎会影响与相应表列关联的每个属性。是否有方法重写模型级配置,以便与表列关联的属性保留表的原始列名?

    代码示例:

      const someModel = sequelize.define('some_table', {
        'id': {
          type: dataTypes.BIGINT,
          primaryKey: true,
          autoIncrement: true,
        },
        'other_table_id': {
          type: dataTypes.BIGINT,
          allowNull: false,
          references: {
            model: 'other_table',
            key: 'id',
            deferrable: INITIALLY_IMMEDIATE,
          },
        },
        'CAPITAL_letterColumn': {
          type: dataTypes.STRING,
          allowNull: true,
          defaultValue: null,,
        }
      }, {
          timestamps: false,
          paranoid: false,
          // underscored: true, // true === snake case, false === camelcase
        }
      });
    
      someModel.associate = (models) => {
        someModel.belongsTo(models.other_table, { foreignKey: 'other_table_id', targetKey: 'id' });
      };
    

    我得到以下错误:

    UnhandledPromiseRejectionWarning: SequelizeDatabaseError: column "otherTableId" does not exist
    

    如果我设置

    underscored: true
    

    我得到以下错误:

    UnhandledPromiseRejectionWarning: SequelizeDatabaseError: column "c_a_p_i_t_a_l_letter_column" of relation "some_table" does not exist
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   user2517182    4 年前

    看起来在模型定义中添加field属性可以解决这个问题。

    'other_table_id': {
      field: 'other_table_id', // <-- this line 
      type: dataTypes.BIGINT,
      allowNull: false,
      references: {
        model: 'other_table',
        key: 'id',
        deferrable: INITIALLY_IMMEDIATE,
      },
    },
    
    推荐文章