Ksh*_*esh 6 sql orm node.js sequelize.js
我有两个型号。用户和管理者
用户模型
const UserMaster = sequelize.define('User', {
UserId: {
type: DataTypes.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
RelationshipId: {
type: DataTypes.STRING,
allowNull: true,
foreignKey: true
},
UserName: {
type: DataTypes.STRING,
allowNull: true
}
})
Run Code Online (Sandbox Code Playgroud)
经理模型
const Manager = sequelize.define('Manager', {
ManagerId: {
type: DataTypes.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
RelationshipId: {
type: DataTypes.STRING,
allowNull: true,
foreignKey: true
},
MangerName: {
type: DataTypes.STRING,
allowNull: true
}
})
Run Code Online (Sandbox Code Playgroud)
模型被缩小以简化问题
协会..
User.belongsTo(models.Manager, {
foreignKey: 'RelationshipId',
as: 'RM'
});
Manger.hasMany(model.User, {
foreignKey: 'RelationshipId',
as: "Users"
})
Run Code Online (Sandbox Code Playgroud)
所以,在 user.findAll() 上
var userObject = models.User.findAll({
include: [{
model: models.Manager,
required: false,
as: 'RM',
attributes: ['ManagerName']
}]
});
Run Code Online (Sandbox Code Playgroud)
我得到以下信息。
userObject = [{
UserId: 1,
RelationshipId: 4545,
UserName: 'Jon',
RM: {
ManagerName: 'Sam'
}
},
{
UserId: 2,
RelationshipId: 432,
UserName: 'Jack',
RM: {
ManagerName: 'Phil'
}
},
...
]
Run Code Online (Sandbox Code Playgroud)
如何将“ManagerName”属性从 Manager 模型(与 RM 关联)移动到 UserObject?是否可以以某种方式从急切加载的模型中加载属性,而不将它们嵌套在单独的对象下?我期望生成的对象看起来像该对象
预期对象——
userObject = [{
UserId: 1,
RelationshipId: 4545,
UserName: 'Jon',
ManagerName: 'Sam' // <-- from Manager model
},
{
UserId: 2,
RelationshipId: 432,
UserName: 'Jack',
ManagerName: 'Phil' // <-- from Manager model
},
...
]
Run Code Online (Sandbox Code Playgroud)
谢谢。
Ksh*_*esh 10
添加raw: true选项attributes可以得到所需的对象格式。
所以,
var userObject = models.User.findAll({
raw:true,
attributes: {
include: [Sequelize.col('RM.ManagerName'), 'ManagerName']
},
include: [{
model: models.Manager,
required: false,
as: 'RM',
attributes: []
}]
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14221 次 |
| 最近记录: |