[英]Sequelize many-to-many: recognise lower camelCase alias and instead try upper CamelCase?
我無法查詢與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
我有三個表, Products
, Extras
,以及它們的關聯表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.