为什么续集将"媒体"复数化为媒介



我遇到了一个非常大的问题,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

的确,现在英语中另一个(通常)不可数名词"media"由此产生(可能1是因为人们忘记了它确实起源于拉丁单词medium的复数形式),但这是一个特殊情况,Sequelize真的不知道,而且它也无法分辨你指的是两个名词中的哪一个。

因此,Sequelize有办法覆盖单数/复数形式。


<子>1我不是词源学家,所以请对此持保留态度。

相关内容

  • 没有找到相关文章

最新更新