【问题标题】:Query sequelize table without column 'id'查询没有列'id'的sequelize表
【发布时间】:2017-06-23 19:22:18
【问题描述】:

我有以下型号

(迁移) transaction.js

    'use strict';
module.exports = {
  up: function(queryInterface, Sequelize) {
    return queryInterface.createTable('transactions', {
      date: {
        type: Sequelize.DATEONLY
      },
      transNo: {
        type: Sequelize.INTEGER,
         allowNull: false,
        autoIncrement: true,
        primaryKey: true,  
    },
      accNo: {
        type: Sequelize.INTEGER
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: function(queryInterface, Sequelize) {
    return queryInterface.dropTable('transactions');
  }
};

(模型) transaction.js

  'use strict';
const credit = require('./credit.js'); 
module.exports = function(sequelize, DataTypes) {
  var transaction = sequelize.define('transaction', {
    date: DataTypes.DATEONLY,
    transNo: DataTypes.INTEGER,
    accNo: DataTypes.INTEGER
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
  transaction.hasOne(models.credit, {foreignKey: 'transNo'});
    }
    }
  });
  return transaction;
};

(模型) credit.js

    module.exports = function(sequelize, DataTypes) {
  var credit = sequelize.define('credit', {
    transNo: DataTypes.INTEGER,
    creNo: DataTypes.INTEGER
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here

      }
    }
  });
  return credit;
};

(迁移) credit.js

` module.exports = {
      up: function(queryInterface, Sequelize) {
        return queryInterface.createTable('credits', {
          transNo: {
            type: Sequelize.INTEGER
          },
          creNo: {
            type: Sequelize.INTEGER,
            autoIncrement: true,
            allowNull: false,
            primaryKey: true
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
          }
        });
      },
      down: function(queryInterface, Sequelize) {
        return queryInterface.dropTable('credits');
      }
    };`

它仍然使用 id 列进行查询

执行(默认):SELECT transaction.id, transaction.date, transaction.accNo,..........(等等)。

如何禁止查询id列?

【问题讨论】:

  • @Muhammad Suleman 对你有用吗?
  • @DamienGold No ... credit.js 的迁移文件 module.exports = { up: function(queryInterface, Sequelize) { return queryInterface.createTable('credits', { ..... .creNo: { type: Sequelize.INTEGER, primaryKey: true },

标签: javascript mysql node.js sequelize.js backend


【解决方案1】:

您只需将另一列设置为主键,默认情况下不会生成id 列。

 module.exports = function(sequelize, DataTypes) {
  var credit = sequelize.define('credit', {
    transNo: DataTypes.INTEGER,
    {
    creNo: DataTypes.INTEGER,
    primaryKey: true //define a primaryKey

    }
}, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
      }
    }
  });
  return credit;
};

【讨论】:

  • 我已将 creNo 作为迁移中的主键
  • 我也遵循这个模型语法,虽然定义了主键,但仍然创建了 id 列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 2015-08-28
  • 2011-12-06
  • 2021-06-14
  • 1970-01-01
相关资源
最近更新 更多