为什么 Sequelize 复数 'media' 到 medium

Why does Sequelize pluralize 'media' to medium

我遇到了一个非常大的问题,sequelize 试图让我最好地猜测它认为我的 table 名字是什么。

我有 3 个 table。属性、媒体和连接点 table PropertyMedia

出于某种原因,当我使用 sequelize 进行连接查询时,出现错误

error: column Properties->PropertyMedia.medium_id does not exist

我进行了全局搜索,以确保我在任何地方都没有找到“媒介”这个词,而且我也没有

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' });

它不会复数到“中”,它单数到“中”。

那是因为 "media" is the plural of "medium" 并且默认情况下 table 名称使用复数,引用使用单数,就像你有 user_id(单数)引用 users(复数),所以这里的 medium_id(不是 media_id)应该引用 media.

的确,现在的英语 another (usually) uncountable noun "media" 就是从那个(可能 1 人们忘记它确实起源于复数形式的拉丁词 medium 而来的),但那是一个特殊情况 Sequelize 确实不知道,而且它无法辨别您指的是两个名词中的哪一个。

因此,Sequelize ways to override the singular/plural forms


1:我不是词源学家所以请对这个持保留态度。