代码之家  ›  专栏  ›  技术社区  ›  Ming

knexjs在insert和on select查询之后返回relations列

  •  0
  • Ming  · 技术社区  · 4 年前

    我有一个employee和department表,其中有一个1:n的关系(许多部门都有一个employee) 我还有一种关系,员工是部门经理: 然后我想对knex执行以下操作,在使用查询获取部门时,还要返回该部门经理提供的所有信息:

    这是我的关系: enter image description here

    这是我按姓名获取部门的功能我需要使用经理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);
        }
      };
    

    我不知道用这种逻辑插入一个department来返回关系中的所有字段是否合适,就像typeorm所做的那样

    0 回复  |  直到 4 年前