我有兩個表,用戶和MControllers。他們通過所謂的歷史另一個表中的許多一對多的關係,就像定義:我做了類似的關聯Sequelize.js急切加載多對多表
var History = sequelize.define("History", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
message: {
type : DataTypes.STRING,
allowNull : false
}
}, {
timestamps: true,
updatedAt: false,
classMethods: {
associate: function(models) {
}
}
});
:
MController.belongsToMany(User, {through: History, onDelete: 'cascade' });
User.belongsToMany(MController, {through: History, onDelete: 'cascade' });
現在,我需要查詢歷史記錄表的用戶表格急切加載。事情是這樣的:
historyEntity.findAll({
where : {
MControllerId : mcontrollerId
},
include : {
model : this.User
}
});
,但我發現了以下錯誤:
[Error: User is not associated to History!]
如果我檢查了歷史模型,它真的沒有任何關聯。 如何使此查詢成爲可能?
編輯: 我試圖查詢用戶表,急於加載歷史表,沒有成功。它告訴我,用戶不與歷史記錄相關聯,其實因爲我已檢查了用戶模式,是不正確的,它說:
{ History: [Object],
UserMController: [Object],
OauthAccessTokensUsers: [Object],
OauthRefreshTokensUsers: [Object] },
我修改了代碼的問題
Activator
秒。在所有使用models.User的地方。除此之外,像你說的那樣,放置hasOne將在用戶表中添加一個fk。不是我想要的,因爲歷史是一個多對多的表格。或者我想錯了? –是的,正如你在解釋它,歷史正在作爲用戶和MControllers之間的連接表,你能解釋你想達到什麼嗎?因爲與這些協會歷史不是一個多對多的表 –
也許我做錯了什麼。我有一個用戶表和一個MController表。它們與另一個名爲UserMController的連接表相關。所有工作正常,但現在我需要另一個表來告訴哪個用戶激活了一些MController。所以我想到了一個歷史記錄表,它有兩個fk,UserId和MControllerId,以及我想存儲的信息。所以我試圖做這些協會,但沒有成功。 –