gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:37:47 26 4
gpt4 key购买 nike

我无法查询与 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com