我遇到了一个非常大的问题,sequelize试图给我最好的猜测,它认为我的表名是什么
我有3张表。属性、媒体和连接表PropertyMedia
由于某些原因,当我使用sequelize执行连接查询时,它会给我错误
error: column Properties->PropertyMedia.medium_id does not exist
我做了一个全局搜索以确保我没有在任何地方找到medium这个词我没有
let Media = sequelize.define('Media', {
url: DataTypes.STRING,
isVideo: DataTypes.BOOLEAN
}, { freezeTableName: true, tableName: 'media' });
let PropertyMedia = sequelize.define('PropertyMedia', {
propertyId: DataTypes.INTEGER,
mediaId: DataTypes.INTEGER
}, { freezeTableName: true, tableName: 'property_media' });
它不把复数化为"medium",它把单数化为"medium"
那是因为"media"是"medium"的复数形式。默认情况下,表名使用复数,引用使用单数,就像user_id
(单数)引用users
(复数)一样,所以这里medium_id
(不是media_id
)应该引用media
。
因此,Sequelize有办法覆盖单数/复数形式。
<子>1我不是词源学家,所以请对此持保留态度。子>