【发布时间】:2017-08-29 21:30:16
【问题描述】:
我有 2 个模型 Project 模型和 Task 模型在 sequelize 中定义如下所示
import { INTEGER, STRING, DATE } from 'sequelize';
import sequelize from '../sequelize';
import Task from './task.model'
const ProjectModel = sequelize.define('project', {
project_id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true
},
phabricator_project_id: {
type: STRING,
allowNull: false
},
name: {
type: STRING
},
description: {
type: STRING
},
start_date: {
type: STRING,
},
end_date: {
type: STRING
}
},
{
timestamps: false
}
);
export default ProjectModel;
和任务模型
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;
我想要实现的是在 TaskModel 中的 tool_project_id 和 ProjectModel 中的 phabricator_project_id 之间创建关系(它们是相同的值,仅给出不同的列名)并为 GET 请求编写查询,该请求以如下所示的形式输出数据
{ {project1Details,TaskDetails-->{task1, task2, task3}, {project2Details,TaskDetails-->{task4, task5, task6}, {project3Details,TaskDetails-->{task7, task8, task9}, {project4Details,TaskDetails-->{task10, task11, task12} }
所有数据库设计都已相应完成,并调用另一个文件来创建所有这些数据库。这是用打字稿写的,我尝试将其作为 GET 方法
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);
});
}
在此方法中,我定义了关系并尝试列出所有“打开”任务并将它们作为响应发回,但我收到错误
未处理的拒绝错误:任务未与项目关联!
对这个问题的任何帮助都会非常棒
【问题讨论】:
-
使用
catchhandler处理promise的rejected状态
标签: mysql node.js typescript