这是我的帐户模型:
module.exports = {
attributes: {
accountPkey: {
type: Sequelize.INTEGER,
primaryKey: true,
field: 'account_pkey'
},
accountName: {
type: Sequelize.STRING,
allowNull: false,
field: 'account_name'
},
imagePkey: {
type: Sequelize.INTEGER,
field: 'image_pkey'
}
},
associations: function() {
Account.hasMany(Privilege, {
as: 'Privileges',
foreignKey: 'account_pkey'
});
Account.hasMany(AccountContact, {
as: 'Contacts',
foreignKey: 'account_pkey'
});
},
options: {
tableName: 'v_account',
timestamps: false,
classMethods: {
whereUserIs(user_pkey, privileges) {
return Account.findAll({
include: [{
model: Privilege,
where: {
'Privilege.privilege_type_name': {
$in: privileges
},
'Privilege.user_pkey': {
$eq: user_pkey
}
}
}]
});
}
},
instanceMethods: {},
hooks: {}
}
};
在我的whereUserIs类方法中,我试图返回所有存在特权的帐户,该特权具有user_pkey并且具有传入的任何特权。
请假设Privilege模型具有account_type_name和user_pkey属性。我的语法是否正确?
编辑:我实际上是使用这个风帆钩来加载sequelize:https://www.npmjs.com/package/sails-hook-sequelize
第二次编辑: 这是一个更复杂的查询:我想找到所有在上面查询的任何帐户上都有权限的用户:
User.findAll({
include: [
{
model: Privilege,
include: [
{
model: Account,
include: [{
model: Privelege,
where: {
'Privilege.privilege_type_name': {
$in: privileges
},
'Privilege.user_pkey': {
$eq: user_pkey
}
}
}]
}
]
}
]
})
这第二个是否有意义?
在这两个查询中,我是否会获得实体列表(即帐户或用户),还是嵌套结果(包括所有包含)?如何确保我的帐户和用户列表是唯一/不同的?