如何使createdby字段具有sequelize?

ivqmmu1c  于 2021-07-29  发布在  Java
关注(0)|答案(0)|浏览(240)

用户模型:

const User = sequelize.define('user', {
  {
    id: {
      type: INTEGER,
      primaryKey: true,
      autoIncrement: true,
      allowNull: false,
    },
    email: {
      type: STRING,
      unique: true,
      allowNull: false,
      validate: {
        notEmpty: true,
        isEmail: true,
      },
    },
  },
})

榜样:

const Role = db.define(
  'role',
  {
    name: {
      type: STRING,
      unique: true,
      allowNull: false,
      validate: {
        notEmpty: true,
      },
    },
  },
})

Role.associate = ({ User }) => {
  Role.belongsTo(User, {
    foreignKey: {
      name: 'createdBy',
      field: 'createdBy',
    },
  })
}

所以,我需要获得现场的完整用户信息 createdBy . 一些graphql架构:

extend type Query {
    roles(offset: Int, limit: Int): [Role!]
  }

  type User {
    id: Int!
    email: EmailAddress!
  }

  type Role {
    id: Int!
    name: String!
    createdBy: User!
  }

我正在尝试创建用户和角色,并将此用户作为创建者:

const testScenario = async ({ DataTable, Role, User }) => {
  const kanyeWest = await User.create({
    email: 'kanye.west@gmail.com',
  })
  await Role.create({
    name: 'Admin',
    createdBy: kanyeWest
}

当我试图得到我的角色时,我得到了一个错误: "message": "Cannot return null for non-nullable field User.id." ```
query Roles {
roles(offset: 0, limit: 5) {
id
name
createdBy {
id
email
}
}
}

但如果我改变了 `createdBy` 在我的架构中 `Int` 我将获取用户id的值
那么,我该怎么修呢?我需要在现场获得完整的用户信息 `createdBy` 当我拿到我的角色列表时
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题