我有一个employee和department表,其中有一个1:n的关系(许多部门都有一个employee)
我还有一种关系,员工是部门经理:
然后我想对knex执行以下操作,在使用查询获取部门时,还要返回该部门经理提供的所有信息:
这是我的关系:
这是我按姓名获取部门的功能我需要使用经理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所做的那样