好吧考虑这个。我的数据库中有 2 个实体 - 组 和 用户 。所以他们之间存在关系——
代码如下——
// Groups and Users (Admins) MANY-TO-MANY
User.belongsToMany(Groups, {through: "admins", as: "AdminGroups"});
Groups.belongsToMany(User, {through: 'admins', as: "Admins"});
// Groups and Users (Members) MANY-TO-MANY
User.belongsToMany(Groups, {through: 'members', as: "MemberGroups"});
Groups.belongsToMany(User, {through: 'members', as: "Members"});
现在的事情是我试图让一个特定组的管理员使用 -
const admins = await group.getAdmins({
attributes: ['id', 'firstname', 'lastname'],
});
哪个有效并给了我以下输出 -
[
{
"id": 1,
"firstname": "Jon",
"lastname": "Doe",
"admins": {
"createdAt": "2021-01-21T18:53:45.791Z",
"updatedAt": "2021-01-21T18:53:45.791Z",
"userId": 1,
"groupId": 11
}
}
]
但它也急切地加载用户的管理信息。
这只是额外的开销,我显然不需要这些信息。不在这里。
任何想法如何分离这种急切的加载?
最佳答案
您可以使用 joinTableAttributes
排除预先加载数据。将空数组设置为不从关联表中获取任何内容。
const admins = await group.getAdmins({
attributes: ['id', 'firstname', 'lastname'],
joinTableAttributes: []
});
关于javascript - 当我使用belongsToMany 关联时,Sequelize 中的自动预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65835302/