【问题标题】:TypeORM. Cannot perform update query because update values are not defined. Call \"qb.set(...)\" method to specify updated values类型ORM。无法执行更新查询,因为未定义更新值。调用 \\\"qb.set(...)\\\" 方法来指定更新值
【发布时间】:2023-01-30 02:26:08
【问题描述】:

我是 TypeORM 的新手。我正在使用 MySQL DB 和 ExpressJS 应用程序。

我有 2 个实体:用户和客户。它们之间是一对一的关系。客户有外键。 保存客户端时出现以下错误:

无法执行更新查询,因为未定义更新值。调用“qb.set(...)”方法来指定更新值

用户实体:

export class User extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  role: string

  @Column()
  email: string

  @Column()
  password: string

  @Column({ default: '' })
  avatar: string

  @Column()
  firstName: string

  @Column()
  lastName: string

  @Column()
  fullName: string

  @Column({ default: '' })
  phone: string

  @Column({ type: 'text', nullable: true })
  description: string

  @Column({ nullable: true })
  age: number

  @OneToOne(_type => Freelancer, freelancer => freelancer.user, { nullable: true })
  freelancer: Freelancer

  @OneToOne(_type => Client, client => client.user, { nullable: true })
  client: Client
}

客户实体:

@Entity()
export class Client extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  companyName: string

  @ManyToOne(_type => Position, position => position.clients)
  position: Position

  @OneToOne(_type => ClientReview, clientReview => clientReview.client, { nullable: true })
  @JoinColumn()
  review: ClientReview

  @OneToMany(_type => Project, project => project.client, { nullable: true })
  projects: Project[]

  @OneToOne(_type => User, user => user.client)
  @JoinColumn()
  user: User
}

auth.service 中的代码,我在其中保存客户端。只是概述:

const user = userRepository.create({
      email,
      password: hashedPassword,
      role,
      description,
      firstName,
      lastName,
      fullName: `${firstName} ${lastName}`,
      phone
    })


      const clientRepository = getRepository(Client)
      const positionRepository = getRepository(Position)

      const positionEntity = await positionRepository.findOne({ id: position.id })


      const client = clientRepository.create({
        companyName,
        position: positionEntity,
        user
      })

      await userRepository.save(user)
      await clientRepository.save(client)

问题出在Client entityuser column,当我删除它时,一切正常,但客户端和用户是分开保存的,显然彼此之间没有任何关系。

所以,我的问题是我做错了什么以及我应该如何解决? 预先感谢您的回答

【问题讨论】:

    标签: mysql typescript express relational-database typeorm


    【解决方案1】:

    嗨,你必须使用

    client.user = user
    

    在保存您的客户和用户之前

    【讨论】:

      【解决方案2】:

      Github issues 看来,很多不同的事情都可能导致此一般性错误消息。

      在我的例子中,我发现问题是我试图保存到“这个”对象上的“其他”对象(在你的例子中,“其他”= user)还不是一个完整的对象(我可能没有使用正确的术语)。就我而言,我必须先完全检索user,然后再将其附加到client,然后保存客户端。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 2019-10-30
        • 1970-01-01
        • 2019-09-22
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        相关资源
        最近更新 更多