簡體   English   中英

Sequelize many-to-many:識別較低的camelCase別名,而是嘗試使用上層CamelCase?

[英]Sequelize many-to-many: recognise lower camelCase alias and instead try upper CamelCase?

我無法查詢與Sequelize的多對多關聯,我猜測它與低/大寫問題有關。

我的別名和列名是camelCaseextraId ),但生成的查詢似乎嘗試使用TitleCasedExtraId ),但這可以從下面的錯誤消息中推斷出來。


我想查詢所有Products及其相關的Extras列表,我嘗試按以下方式執行此操作:

    const data = await models.Product.findAll(
      {
        include: [{
          model: models.Extra,
          as: 'extras'
        }]
      }
    );

但是,這給了我以下錯誤:

column extras->ProductExtras.ExtraId does not exist

我有三個表, ProductsExtras ,以及它們的關聯表ProductExtras定義如下:

  const Product = sequelize.define('Product', {
    name: {
        allowNull: false,
        type: DataTypes.STRING
    }
  }, {});
  Product.associate = function(models) {
    Product.belongsToMany(models.Extra, {
      as: 'extras',
      through: 'ProductExtras'
    });
  };



  const Extra = sequelize.define('Extra', {
    code: DataTypes.INTEGER,
    desc: DataTypes.STRING
  }, {});
  Extra.associate = function(models) {
    Extra.belongsToMany(models.Product, {
      as: 'products',
      through: 'ProductExtras'
    })
  };



  const ProductExtras = sequelize.define('ProductExtras', {
    productId: DataTypes.INTEGER,
    extraId: DataTypes.INTEGER
  }, {});
  ProductExtras.associate = function(models) {
    ProductExtras.belongsTo(models.Product, {foreignKey: 'productId'});
    ProductExtras.belongsTo(models.Extra, {foreignKey: 'extraId'})
  };

任何有關此問題的見解或解決方案將不勝感激。

您是否嘗試過將外鍵添加到belongsToMany,如下所示? 這就是我用來覆蓋連接表的默認列名。

Product.associate = function(models) {
    Product.belongsToMany(models.Extra, 
      {
      as: 'extras',
      through: 'ProductExtras',
      foreignKey : 'extraId'
      }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM