Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么sequelize忽略references属性?_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript 为什么sequelize忽略references属性?

Javascript 为什么sequelize忽略references属性?,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我使用sequelize: "dependencies": { "@types/node": "^14.14.6", "sequelize": "^6.3.5", "tedious": "^9.2.1", "typescript": "^4.0.5" } 我的sql数据库中有两个

我使用sequelize:

 "dependencies": {
    "@types/node": "^14.14.6",
    "sequelize": "^6.3.5",
    "tedious": "^9.2.1",
    "typescript": "^4.0.5"
  }
我的sql数据库中有两个表:
user
task

task
表中的
task\u user\u id
引用了用户表:

taskUserId: {
    type: DataTypes.UUID,
    allowNull: true,
    references: {
     model: "user",
     key: "id",
    },
    field: "task_user_id",
},
那么,为什么当我运行
findAll
函数时,我得不到对象内部的用户详细信息呢

const u = await Task.findAll({ raw: true });
也许我的代码中缺少什么

task.ts:

/* jshint indent: 2 */

import { DataTypes, Model, Sequelize } from "sequelize";

export interface TaskAttributes {
  id?: number;
  taskUserId?: string;
  name?: string;
}

export class Task
  extends Model<TaskAttributes, TaskAttributes>
  implements TaskAttributes {
  id?: number;
  taskUserId?: string;
  name?: string;

  static initModel(sequelize: Sequelize) {
    Task.init(
      {
        id: {
          autoIncrement: true,
          type: DataTypes.INTEGER,
          allowNull: false,
          primaryKey: true,
        },
        taskUserId: {
          type: DataTypes.UUID,
          allowNull: true,
          references: {
            model: "user",
            key: "id",
          },
          field: "task_user_id",
        },
        name: {
          type: DataTypes.STRING(600),
          allowNull: true,
          field: "task_name",
        },
      },
      {
        sequelize,
        tableName: "task",
        schema: "dbo",
        timestamps: false,
      }
    );
    return Task;
  }
}
/*jshint缩进:2*/
从“Sequelize”导入{DataTypes,Model,Sequelize};
导出接口任务属性{
id?:编号;
taskUserId?:字符串;
名称?:字符串;
}
导出类任务
扩展模型
实现TaskAttributes{
id?:编号;
taskUserId?:字符串;
名称?:字符串;
静态initModel(sequelize:sequelize){
Task.init(
{
身份证:{
自动递增:真,
类型:DataTypes.INTEGER,
allowNull:错,
primaryKey:没错,
},
taskUserId:{
类型:DataTypes.UUID,
阿洛诺:是的,
参考资料:{
型号:“用户”,
密钥:“id”,
},
字段:“任务\用户\ id”,
},
姓名:{
类型:DataTypes.STRING(600),
阿洛诺:是的,
字段:“任务名称”,
},
},
{
续集,
tableName:“任务”,
模式:“dbo”,
时间戳:false,
}
);
返回任务;
}
}
user.ts:

/* jshint indent: 2 */

import { DataTypes, Model, Sequelize } from 'sequelize';

export interface UserAttributes {
  id?: string;
  name?: string;
  email?: string;
  password?: string;
}

export class User extends Model<UserAttributes, UserAttributes> implements UserAttributes {
  id?: string;
  name?: string;
  email?: string;
  password?: string;

  static initModel(sequelize: Sequelize) {
    User.init(
      {
        id: {
          type: DataTypes.UUID,
          allowNull: false,
          primaryKey: true,
        },
        name: {
          type: DataTypes.STRING(80),
          allowNull: false,
        },
        email: {
          type: DataTypes.STRING(255),
          allowNull: false,
        },
        password: {
          type: DataTypes.STRING,
          allowNull: false,
        },
      },
      {
        sequelize,
        tableName: 'user',
        schema: 'dbo',
        timestamps: false,
      }
    );
    return User;
  }
}
/*jshint缩进:2*/
从“Sequelize”导入{DataTypes,Model,Sequelize};
导出接口用户属性{
id?:字符串;
名称?:字符串;
电子邮件?:字符串;
密码?:字符串;
}
导出类用户扩展模型实现用户属性{
id?:字符串;
名称?:字符串;
电子邮件?:字符串;
密码?:字符串;
静态initModel(sequelize:sequelize){
User.init(
{
身份证:{
类型:DataTypes.UUID,
allowNull:错,
primaryKey:没错,
},
姓名:{
类型:DataTypes.STRING(80),
allowNull:错,
},
电邮:{
类型:DataTypes.STRING(255),
allowNull:错,
},
密码:{
类型:DataTypes.STRING,
allowNull:错,
},
},
{
续集,
tableName:'用户',
架构:“dbo”,
时间戳:false,
}
);
返回用户;
}
}

为了请求具有链接模型的模型,您应该在模型之间添加明确的关联,如下所示:

Task.belongTo(User, { foreignKey: 'task_user_id' })
const u = await Task.findAll({ raw: true, include: [User] });
之后,您可以与链接用户一起查询任务,如下所示:

Task.belongTo(User, { foreignKey: 'task_user_id' })
const u = await Task.findAll({ raw: true, include: [User] });

因此,`references:{model:“user”,key:“id”,},`这不重要吗?不,它只是用于使用
sequelize.sync
,也用于“无约束地强制外键引用”,请参阅