0

您好,我在执行以下操作时对 knex 有疑问,我有一个员工和部门表,其中存在 1:n 关系(许多部门的员工),并且我也有一个员工是部门经理的关系:然后我想用knex做以下事情,当使用查询获取部门时,还返回该部门经理的所有信息:

这是我的关系: 在此处输入图像描述

这是我在这里按名称获取部门的功能,我需要使用 manager_id 获取我的经理:

  public findByName = async (
    departament_name: string,
  ): Promise<Departament | undefined> => {
    const rawDepartament = await this.db
      .select('*')
      .from<Departament>(this.tableName)
      .where({ departament_name })
      .first();
    if (!rawDepartament) return undefined;
    return rawDepartament ;
  };

并且在进行部门插入查询时,我想返回经理的数据:

  public create = async (item: any): Promise<Departament> => {
    const trx = await this.transactionProvider();
    try {
      const rawExists = await this.findByName(item.departament_name);
      if (rawExists) Promise.reject(new Error('Data already exists'));
      const rawResult = await trx()
        .insert(item)
        .into<Departament>(this.tableName)
        .returning('*');
      await trx.commit();
      return rawExists ;
    } catch (error) {
      trx.rollback();
      return Promise.reject('Error adding departament Name: ' + error);
    }
  };

我不知道使用这种逻辑是否可以插入一个部门来返回关系的所有字段类似于 typeorm 所做的事情

4

0 回答 0