簡體   English   中英

Sequelize :適用於 where 條件不適用於單數和復數的范圍

[英]Sequelize : Scope with where condition not working with singular and plural

我希望在運行 1:1 和 N:N 關系的孩子中設置一個有效條件,就像這個例子 1:1

// Find all projects with a least one task where task.state === project.state
Project.findAll({
    include: [{
        model: Task,
        where: { state: Sequelize.col('project.state') }
    }]
})

只有表的名稱根據關系將名稱從“project”更改為“projects”在這種情況下,“project.state”將起作用,但來自具有 N:N 關聯的模型的請求將給出錯誤:

"invalid reference to FROM-clause entry for table \" project \ ""

條件應該是“projects.state”

如果我在每個查詢的 include 中使用“as :project”,但如果有人有好主意,則可以工作。

謝謝你的幫助

最好的方法是強制 sequelize.js 使用模型中提到的原始名稱,同時在數據庫中創建表您可以使 sequelize.js 使用給定的名稱而不是復數名稱

var db_instance = new Sequelize(config.DB.database, config.DB.username, config.DB.password, {
  host: config.DB.host,
  dialect: config.DB.dialect,
  define: {
    timestamps: true,
    freezeTableName: true
  },
  logging: false
});  

或者

您也可以直接告訴 Sequelize 表的名稱:

sequelize.define('project', {
  // ... (attributes)
}, {
  tableName: 'project'
});

您可以在 sequelize.js 的文檔中看到這兩種方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM