【发布时间】:2021-03-20 04:50:44
【问题描述】:
我正在使用 Node、Express 和 Sequelize 制作 Web API。我有模型用户和团队(如下所示)。用户有一个引用 Teams.id 的 teamId,并且两者之间存在关联以反映这一点。
用户定义
const User = sequelize.define('User', {
id: {
autoIncrement: true,
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true
},
displayName: {
type: DataTypes.STRING,
allowNull: false
},
teamId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'Team',
key: 'id'
}
}
}
团队定义
const Team = sequelize.define('Team', {
id: {
autoIncrement: true,
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
}
}
联想
User.belongsTo(Team, { as: 'team', foreignKey: 'teamId' });
查询
Users.findAll({
include: [
{
model: Team,
as: 'team'
}
]
});
正如预期的那样,这将返回一个用户对象列表,其中添加了“团队”属性,嵌入了相应的团队对象,如下所示:
[
{
"id": 1,
"displayName": "John Smith",
"teamId": 1,
"team": {
"id": 1,
"name": "My Awesome Team"
}
}
]
我的目标是返回 User 对象,但不是将整个 Team 对象嵌入到 team 属性下,我想只添加团队的名称作为属性的值,如下所示:
[
{
"id": 1,
"displayName": "John Smith",
"teamId": 1,
"team": "My Awesome Team"
}
]
有没有办法用 Sequelize 来完成这个?
【问题讨论】:
标签: node.js sequelize.js