У меня проблемы с гнездом. То, что я хочу, немного сложно, и я не знаю, как это сделать. Во-первых, с помощью идентификатора сайта я извлекаю пользователей с этого сайта и хочу иметь возможность разбивать на страницы, сортировать по порядку (des c или как c мне все равно) и фильтровать результаты по значению (строка). И в выводе я хочу сделать объект с массивом результатов и синтеза. Пример:
{
results : [{audit}],
syhthesis: {pageNumber: number, numberOfResults: number}
}
Честно говоря, я пытался некоторое время, но я просто не могу понять, как это сделать. Вот мой фактический код:
контроллер:
import { Controller, Get, Query, Param, Post, Body } from '@nestjs/common';
import { UserAuditService } from './user-audit.service';
import { UserAudit } from 'src/entities/user-audit.entity';
@Controller('useraudit')
export class UserAuditController {
constructor(private readonly userAuditService : UserAuditService){};
@Post("/userpersite/{:id}")
async getUsers(@Body()id: string, @Query('page') page: number): Promise<UserAudit[]>{
return this.userAuditService.getAuditsForSite(id, page)
}
}
служба:
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { UserAudit } from '../entities/user-audit.entity';
import { Repository } from 'typeorm';
@Injectable()
export class UserAuditService {
constructor(
@InjectRepository(UserAudit)
private readonly userAuditRepository : Repository<UserAudit>
){}
async getAuditsForSite(_siteId : string, page: number = 1) : Promise<UserAudit[]>{
return this.userAuditRepository
.find({
join : {
alias : "user-audit",
innerJoinAndSelect: {
user : "user-audit.who"
}
},
where : {
site : _siteId
},
take: 10,
skip: 10 * (page -1)
})
}
}
и сущность:
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm';
import { User } from './user.entity';
import { Site } from './site.entity';
@Entity('user-audit')
export class UserAudit {
@PrimaryGeneratedColumn()
id : string;
@ManyToOne(type => User, user => user.id)
who : User
@Column({ length : 100 })
action : string
@ManyToOne(type => Site, site => site.id)
site : Site
@Column({ type : 'date' })
date : Date
@Column({ length : 1000 })
before : string
@Column({ length : 1000 })
after : string
}
I Я пробовал много вещей в моем контроллере, но теперь, я застрял, я знаю, что что-то упустил, возможно, много вещей, поэтому, если кто-то может мне помочь, это будет очень благодарно:)