私はpolicyTable
とpolicy_rule
という2つのモデルを以下のように定義しています。外部キーであるpolicy_rule
にはpolicy_id
という列があり、にはid
の列が参照されています。 policy_rule
は複数のpolicyTable
を持つことができます。すなわち、1:Nの関係があります。シンプルなインナージョイントを続ける
var policyTable = dbController.db.define('policyTable', {
id: {
type: Sequelize.BIGINT,
autoIncrement: true,
primaryKey: true
},
't': {
type: Sequelize.BIGINT,
unique: true
},
'name': {
type: Sequelize.STRING,
},
src: {
type: Sequelize.STRING
}
}, {
timestamps: false,
freezeTableName: true,
tableName: 'zo_policy',
});
var policy_rule = dbController.db.define('policy_rule', {
policy_id: {
type: Sequelize.BIGINT,
references: {
model: policyTable,
key: 'id'
},
onUpdate: 'cascade',
onDelete: 'cascade'
},
agent_id: {
type: Sequelize.BIGINT,
},
enabled: {
type: Sequelize.BOOLEAN,
}
}, {
timestamps: false,
freezeTableName: true,
tableName: 'zo_policy_rule',
});
ここで、この2つのモデルを結合して、両方の列をすべて取得したいと考えています。どうやってやるの?私は以下のコードを試してみましたが、それはあなたの団体は、データベースレベルで定義されているにもかかわらず
Error: policy_rule is not associated to policyTable!
function getAllPolicies() {
return policyTable.findAndCountAll({
include: [{
model: policy_rule
}]
}).then(function (users) {
console.log(users);
data.count = users.count;
data.users = users.rows;
console.log(data);
return data;
});
};