【发布时间】:2021-01-23 03:02:01
【问题描述】:
好的,考虑一下。我的数据库中有 2 个实体 - Groups 和 Users。所以它们之间存在关系-
- 一个用户可以是多个组的成员,一个组可以有多个成员(多对多)
- 一个管理员(用户)可以是多个组的管理员,一个组可以有多个管理员(多对多)
代码如下-
// 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
}
}
]
但它也急切地加载用户的管理信息。 这只是额外的开销,我显然不需要这些信息。不在这里。 任何想法如何分离这个急切的加载?
【问题讨论】:
标签: javascript node.js database postgresql sequelize.js