javascript - Sequelize 多对多 : recognise lower camelCase alias and instead try upper CamelCase?

标签 javascript sequelize.js

我无法查询与 Sequelize 的多对多关联,我推测它与小写/大写问题有关。

我的别名和列名是 camelCase ( extraId ),但生成的查询似乎尝试 TitleCased ( ExtraId ),但这是从下面的错误消息推断出来的。

我想查询所有 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'
      }
);

关于javascript - Sequelize 多对多 : recognise lower camelCase alias and instead try upper CamelCase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56223973/

相关文章:

javascript - Angular 4 : How to bind to function result in ngFor

javascript - 使用 JQuery 创建后未检查具有必需 Prop 的输入

javascript - HTML动态背景文字

node.js - Sequelize.js 深度保存模型实例

node.js - 通过连接几个表获取不同的数据 Sequelize ORM

node.js - Sequelize DataTypes 类型错误 : Cannot read property 'INTEGER' of undefined

javascript - 单击按钮时调用 addEventListener 时执行整个 JS 代码

javascript - 如何列出特定年份的一个月有多少天?

node.js - 使用 Sequelize.js 添加带有自动生成字段的数据

node.js - Sequelize 在任何查找查询上都会崩溃