我对续集是个新手,就像我今天刚学到的一样。我甚至不知道如何在它上面问一个问题,所以请让我知道我如何才能改进这一点。我有下面的问题。
router.get('/:id/work', async (req, res) => {
let results = await User.findAll(
{
where: {
id: req.params.id
},
include: [Task, Project]
}
);
res.status(200);
res.send(results);
});
我想要获取用户信息,并将'tasks‘和'projects’作为'assigner‘和'project_id’属性的数组。“我的项目”和“任务”模型都将这些列作为外键。我得到的结果如下所示
{
id: 5,
email: "asd@asdads.com",
name: "asdasdasd",
surname: "asdasdasdasd1231",
Task: {
id: 9,
name: "req.body.name",
description: "req.body.description",
score: 1,
status: "req.body.status",
assigner: 5,
project_id: null
},
Project: {
id: 2,
name: "req.body.name",
body: "req.body.body",
status: null,
assigner: 5
}
},
{
id: 5,
email: "asd@asdads.com",
name: "asdasdasd",
surname: "asdasdasdasd1231",
Task: {
id: 9,
name: "req.body.name",
description: "req.body.description",
score: 1,
status: "req.body.status",
assigner: 5,
project_id: null
},
Project: {
id: 3,
name: "req.body.name",
body: "req.body.body",
status: "req.body.status",
assigner: 5
}
},
有什么快速的方法可以做到这一点吗?
{
id: 5,
email: "asd@asdads.com",
name: "asdasdasd",
surname: "asdasdasdasd1231",
Task: [/*all task objects*/],
Project: [/*all project objects*/]
}
模型定义
const User = db.define('User', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
email: Sequelize.STRING,
name: Sequelize.STRING,
surname: Sequelize.STRING,
}, {
timestamps: false,
tableName: 'users'
})
/**
* Model Relations
*/
Project.belongsTo(User, { foreignKey: 'assigner' })
User.hasOne(Project, { foreignKey: 'assigner' })
Task.belongsTo(User, { foreignKey: 'assigner' })
User.hasOne(Task, { foreignKey: 'assigner' })
Task.belongsTo(Project, { foreignKey: 'project_id' })
export default User;
const Task = db.define('Task', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: Sequelize.STRING,
description: Sequelize.TEXT,
score: Sequelize.INTEGER,
status: Sequelize.STRING,
assigner: {
type: Sequelize.INTEGER,
references: {
model: User,
key: 'id'
}
},
project_id: {
type: Sequelize.INTEGER,
references: {
model: Project,
key: 'id'
}
}
}, {
timestamps: false,
tableName: 'tasks'
})
export default Task;
const Project = db.define('Project', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: Sequelize.STRING,
body: Sequelize.STRING,
status: Sequelize.STRING,
assigner: {
type: Sequelize.INTEGER,
references: {
model: User,
key: 'id'
}
}
}, {
timestamps: false,
tableName: 'projects'
})
export default Project;
发布于 2020-06-03 18:59:54
将关联定义从hasOne更改为hasMany,因为我看到许多项目可以链接到一个用户和任务:
User.hasMany(Project, { foreignKey: 'assigner' })
User.hasMany(Task, { foreignKey: 'assigner' })
https://stackoverflow.com/questions/62178517
复制相似问题