我有2个模型项目模型和任务模型在sequelize中定义,如下所示
import { INTEGER, STRING, DATE } from 'sequelize';
import sequelize from '../sequelize';
const TaskModel = sequelize.define('task', {
task_id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true
},
title: {
type: STRING
},
status: {
type: STRING
},
priority: {
type: STRING
},
description: {
type: STRING
},
tool_project_id: {
type: STRING
},
date_modified: {
type: STRING
}
},
{
timestamps: false
}
);
export default TaskModel;
和任务模型
listByProjects(req, res) {
TaskModel.belongsTo(ProjectModel, { as: 'task' , foreignKey: 'tool_project_id'});
ProjectModel.findAll({
include:[{model:TaskModel}],
where:{status:'open'}
}).then(function(projects) {
res.json(projects);
});
}
我想要实现的是在TaskModel中的tool_project_id和ProjectModel中的phabricator_project_id之间创建关系(它们是相同的值,只给出diff列名),并为GET请求编写查询,该请求以下面显示的形式输出数据< / p>
{{project1Details,TaskDetails - &gt; {task1,task2,task3}, {project2Details,TaskDetails - &gt; {task4,task5,task6}, {project3Details,TaskDetails - &gt; {task7,task8,task9}, {project4Details,TaskDetails - &gt; {task10,task11,task12}}
所有数据库设计都已相应完成,并调用另一个文件来创建所有这些数据库。这是用打字稿写的,我试过这个作为GET方法
{{1}}
在这个方法中,我定义了这个关系并尝试列出所有“打开”的任务并将它们作为响应发送回来,但是我收到了错误
未处理拒绝错误:任务未与项目关联!
对这个问题的任何帮助都会非常充实
答案 0 :(得分:1)
这个问题的答案是,在创建表格时,我们应该创建关系,然后创建表格,如
创建关系,键的名称也应相同,以便创建关系。
TaskModel.belongsTo(ProjectModel, {foreignKey: 'project_id' });
ProjectModel.hasMany(TaskModel, { foreignKey: 'project_id' });
然后创建表项目,然后创建任务
ProjectModel.sync({ force: false }).then(function () {
console.log('Project table created');
TaskModel.sync({ force: false }).then(function () {
console.log('Task table created');
});
});
然后在API方法中,您只需要包含要提供的模型以获取所需的数据。
ProjectModel.findAll({
include: [{
model: TimeSheetModel,
where: {
status: "ACTIVE"
},
}],
}).then(function (projects) {
const responseData = {
'status': 1,
'message': 'List successfull.',
'projects': projects,
};
res.json(responseData);
}).catch(error => {
const responseData = {
'status': 1,
'message': error.message,
'projects': [],
};
res.json(responseData);
})
这使用nodemon和sequilize来分别管理表的节点和关系