我在 sequelize 遇到了一個非常大的問題,試圖讓我最好地猜測它認為我的表名是什么。
我有3張桌子。屬性、媒體和連接表 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' });
uj5u.com熱心網友回復:
它不是復數為“medium”,而是單數為“medium”。
這是因為“media”是“medium”的復數形式,默認情況下表名使用復數,而references使用單數,就像你有user_id(單數)參考users(復數)一樣,所以這里medium_id(不是media_id)應該參考media.
確實,如今在英語中出現了另一個(通常)不可數名詞“media”(可能是1來自人們忘記它確實起源于復數形式的拉丁詞 medium),但這是一個特殊情況 Sequelize 不知道,真的,而且它也無法辨別您指的是這兩個名詞中的哪一個。
出于這個原因,Sequelize 有辦法覆寫單數/復數形式。
1 : 我不是詞源學家,所以請持保留態度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/327506.html
