Javascript NESTJS-如何发送带有数组和对象的对象

Javascript NESTJS-如何发送带有数组和对象的对象,javascript,nestjs,Javascript,Nestjs,我和nest有麻烦了。我想要的有点难,我不知道怎么做。首先,使用站点ID,我从该站点检索用户,我希望能够进行分页、按顺序排序(desc或asc,我不在乎),并按值(字符串)过滤结果。在输出中,我想制作一个包含结果和合成数组的对象。例如: { results : [{audit}], syhthesis: {pageNumber: number, numberOfResults: number} } 老实说,我已经试了一段时间了,但我就是不知道怎么做。这是我的实际代码: 控制员: im

我和nest有麻烦了。我想要的有点难,我不知道怎么做。首先,使用站点ID,我从该站点检索用户,我希望能够进行分页、按顺序排序(desc或asc,我不在乎),并按值(字符串)过滤结果。在输出中,我想制作一个包含结果和合成数组的对象。例如:

{
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 { Controller, Get, Query, Param, Post, Body } from '@nestjs/common';

import { UserAuditService } from './user-audit.service';

import { UserAudit } from 'src/entities/user-audit.entity';

import { UserAuditRequest } from '../entities/user-audit-request';

import { ResultUserAudit } from '../entities/result-user-audit';

import { Any } from 'typeorm';



@Controller('useraudit')

export class UserAuditController {



    constructor(private readonly userAuditService : UserAuditService, private readonly resultUserAudit: ResultUserAudit){};


    @Post("/userpersite/:id")

    async postUserPerSite(@Param()id: string,@Body() request : UserAuditRequest): Promise<ResultUserAudit>{

       return await this.userAuditService.getAuditsForSite(id, request.pagination.pageNumber, request.filter);

我在我的控制器中尝试了很多东西,但是现在,我被卡住了,我知道我遗漏了一些东西,也许很多东西,所以如果有人能帮助我,我将非常感激:)

用户审核服务中
你可以使用
查找和计数
而不是
查找
。它将返回一个包含2个元素的数组。第一个元素是实体,第二个元素是总计数。然后,您需要创建适当的响应对象:

async getUsers(@Body()id: string, @Query('page') page: number): Promise<object>{
  const [audits, total] = await this.userAuditService.getAuditsForSite(id, page)
  return {
    results : audits,
    syhthesis: {
      pageNumber: page,
      numberOfResults: total,
  }
}

异步getUsers(@Body()id:string,@Query('page')page:number):承诺{ const[audits,total]=等待这个.userAuditService.getAuditsForSite(id,第页) 返回{ 结果:审计, 综合征:{ 页码:第页, 结果:总数, } }
UserAuditService
中,您可以使用
findAndCount
而不是
find
。它将返回一个包含2个元素的数组。第一个元素是实体,第二个是总计数。然后,您需要创建相应的响应对象:

async getUsers(@Body()id: string, @Query('page') page: number): Promise<object>{
  const [audits, total] = await this.userAuditService.getAuditsForSite(id, page)
  return {
    results : audits,
    syhthesis: {
      pageNumber: page,
      numberOfResults: total,
  }
}

异步getUsers(@Body()id:string,@Query('page')page:number):承诺{ const[audits,total]=等待这个.userAuditService.getAuditsForSite(id,第页) 返回{ 结果:审计, 综合征:{ 页码:第页, 结果:总数, } }
很抱歉再次打扰您。因此我尝试了它,但它不起作用:/我确信这就是解决方案。因此我想到了一些办法:使用模型,但我还是被卡住了。以下是新代码:

服务:

import { Injectable } from '@nestjs/common';

import { InjectRepository } from '@nestjs/typeorm';

import { UserAudit } from '../entities/user-audit.entity';

import { Repository } from 'typeorm';

import { UserAuditRequest } from '../entities/user-audit-request';



@Injectable()

export class UserAuditService {



    constructor(

        @InjectRepository(UserAudit)

        private readonly userAuditRepository : Repository<UserAudit>,

        private readonly userRequest: Repository<UserAuditRequest>

    ){}



    async getAuditsForSite(_siteId : string, page: number = 1, filter: any) : Promise<any>{



        const joinAndSort = this.userAuditRepository

        .findAndCount({

            join : {

                alias : "user-audit",

                innerJoinAndSelect: {

                    user : "user-audit.who"

                }

            },

            where : {

                site : _siteId

            },

            take: 10,

            skip: 10 * (page -1)

        })

        joinAndSort



        const sortElement = this.userRequest.find({

            where: {

                pagination: page

            }

        })

        sortElement



        const filterElement = this.userRequest.findAndCount({

            where: {

                filter: filter

            }

        })

        filterElement

    }



}
结果模型:

import { Injectable } from "@nestjs/common";

import { UserAudit } from "./user-audit.entity";



@Injectable()

export class ResultUserAudit {

    constructor(private userAudit: UserAudit){}



    result: UserAudit[];



    synthesis: {



        pageNumber: number,



        resultNumber: number;



    }



}

我正在尝试为我的代码获取逻辑,但我不知道,我就是无法成功:(我在我的第一篇帖子中看到了我想做的解释(希望如此),但我无法做到。我希望有人能够帮助和解释。谢谢:)

很抱歉再次打扰您。因此我尝试了它,但它不起作用:/我确信这就是解决方案。因此我想到了一些办法:使用模型,但我还是被卡住了。下面是新代码:

服务:

import { Injectable } from '@nestjs/common';

import { InjectRepository } from '@nestjs/typeorm';

import { UserAudit } from '../entities/user-audit.entity';

import { Repository } from 'typeorm';

import { UserAuditRequest } from '../entities/user-audit-request';



@Injectable()

export class UserAuditService {



    constructor(

        @InjectRepository(UserAudit)

        private readonly userAuditRepository : Repository<UserAudit>,

        private readonly userRequest: Repository<UserAuditRequest>

    ){}



    async getAuditsForSite(_siteId : string, page: number = 1, filter: any) : Promise<any>{



        const joinAndSort = this.userAuditRepository

        .findAndCount({

            join : {

                alias : "user-audit",

                innerJoinAndSelect: {

                    user : "user-audit.who"

                }

            },

            where : {

                site : _siteId

            },

            take: 10,

            skip: 10 * (page -1)

        })

        joinAndSort



        const sortElement = this.userRequest.find({

            where: {

                pagination: page

            }

        })

        sortElement



        const filterElement = this.userRequest.findAndCount({

            where: {

                filter: filter

            }

        })

        filterElement

    }



}
结果模型:

import { Injectable } from "@nestjs/common";

import { UserAudit } from "./user-audit.entity";



@Injectable()

export class ResultUserAudit {

    constructor(private userAudit: UserAudit){}



    result: UserAudit[];



    synthesis: {



        pageNumber: number,



        resultNumber: number;



    }



}

我正在尝试为我的代码获取逻辑,但我不知道,我就是无法成功:(我在我的第一篇帖子中看到了我想做的解释(希望如此),但我无法做到。我希望有人能够帮助和解释。谢谢:)

非常感谢!!!我认为不可能发回大量数据,我正在考虑用几种方法制作,所以谢谢!:)非常感谢!!!我认为不可能发回大量数据,我正在考虑用几种方法制作,所以谢谢!)