【问题标题】:Why does Sequelize pluralize 'media' to medium为什么 Sequelize 将“媒体”复数化为媒体
【发布时间】:2021-10-20 19:19:16
【问题描述】:

我在使用 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' });

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    它不会复数为“中”,而是单数化为“中”。

    这是因为"media" is the plural of "medium" 和默认情况下表名使用复数,引用使用单数,就像你有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:我不是词源学家,所以请谨慎对待。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-17
      • 2022-12-16
      • 2017-03-26
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      相关资源
      最近更新 更多