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

Sequelize不会从数据库获取表

  •  0
  • Cacoon  · 技术社区  · 6 年前

    我正在设置Sequelize,以便更容易地操作MSSQL数据库。

    我试图定义一个名为“Stock”的表,但是当我尝试查询这个表时,它会做各种奇怪的事情。 下面是我定义它的代码:

    const Stock = sequelize.define('Stock', {
        StockID: {
            type: Sequelize.INTEGER
        },
        TradeName: {
            type: Sequelize.STRING
        },
        ProductGroupID: {
            type: Sequelize.INTEGER
        },
        ProductClassID: {
            type: Sequelize.INTEGER
        },
        ClubID: {
            type: Sequelize.INTEGER
        },
        NettIntoStore: {
            type: Sequelize.STRING
        },
        NegotiatedCost: {
            type: Sequelize.STRING
        },
        MaximumSOH: {
            type: Sequelize.INTEGER
        },
        OrderCategory: {
            type: Sequelize.SMALLINT
        },
        LastCountDate: {
            type: Sequelize.DATE
        },
        RobotStoreInFridge: {
            type: Sequelize.SMALLINT
        },
        NoShelfLabels: {
            type: Sequelize.INTEGER
        },
        SOLayby: {
            type: Sequelize.REAL
        },
    });
    
    // force: true will drop the table if it already exists
    Stock.findOne().then(stock => {
        console.log(stock.get('TradeName'));
    });
    

    现在正常运行。也就是说,获得第一个库存行很容易;但是它会由于某些原因在查询中引用“库存”,如代码中所示:

    enter image description here

    我不想添加一个新的主ID,它已经设置为StockID(我想我必须在类型旁边设置我自己),但目前我只想得到一个现有的数据库(Stand),简单地查询它并更新某些行。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Vivek Doshi    6 年前

    sequenceize默认情况下假设表具有id主键属性。

    要定义自己的主键:

    sequelize.define('collection', {
      uid: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true // Automatically gets converted to SERIAL for postgres
      }
    });
    
    sequelize.define('collection', {
      uuid: {
        type: Sequelize.UUID,
        primaryKey: true
      }
    });
    

    READ MORE