当前位置: 首页 > 知识库问答 >
问题:

如何使用NestJS提供服务器端分页?

牛经赋
2023-03-14

给定一个使用Nestjs的MEVN堆栈,MongoDB(mongoose)我正在设置服务器端分页。我的方法是使用mongoose-aggregate-paginate-v2,但我无法从我的研究1中提取出我需要的内容,以便在Nestjs(typescript)和mongoose的框架内完成这项工作。谢谢你的帮助。。

在有关 Nestjs 猫鼬模型和猫鼬聚合分页 v2 设置的文档之后,我有以下内容:

联系人.provider.ts

import mongoose, { Connection, AggregatePaginateResult, model } from "mongoose";
import { ContactSchema } from "./contact.schema";
import aggregatePaginate from "mongoose-aggregate-paginate-v2";
import { IContact } from "./interfaces/contact.interface";

// notice plugin setup:
ContactSchema.plugin(aggregatePaginate);

// is this correct ?
interface ContactModel<T extends Document> extends AggregatePaginateResult<T> {}

// how to create model for factory use ?
export const ContactModel: ContactModel<any> = model<IContact>('Contact', ContactSchema) as ContactModel<IContact>;

export const contactProvider = [
  {
    provide: 'CONTACT_MODEL',
    useFactory: (connection: Connection) => {
      // how to instantiate model ?
      let model = connection.model<ContactModel<any>>('Contact', ContactSchema);
      return model;
    },
    inject: ['DATABASE_CONNECTION'],
  },
];

我在阅读Nestjs文档、mongoose文档和typescript文档之间。沿着这条路径,有一种方法可以在我的Contact模型上提供aggregatePage方法,这样我就可以像这样调用:

contact.service.ts

// Set up the aggregation
const myAggregate = this.contactModel.aggregate(aggregate_options);
const result = await this.contactModel.aggregatePaginate(myAggregate, options); // aggregatePaginate does not exist!

查看正在进行的代码-可在此分支上获得。

研究

  1. 猫鼬打字稿的方式...?
  2. 在猫鼬中使用带有 lean() 函数的打字稿的完整指南
  3. 使用Mongoose for Node的Typescript的完整指南.js
  4. MosesEsan/mesan-nodejs-crud-api-with-pagination-filtering-group-and-sorting-capabilities
  5. 节点.js API:添加具有分页、筛选、分组和排序功能的 CRUD 操作。
  6. 以正确的方式构建 API 分页
  7. SO:猫鼬插件嵌套js
  8. SO:使用猫鼬和巢进行分页

共有1个答案

东方栋
2023-03-14

NestJs与mongoose-comury-分页-v2和mongoose-分页-v2之间存在冲突,因为这些插件使用的是@类型/mongoose,因此,如果您使用@类型/mongoose,NestJS会发生冲突。

我告诉你这个是因为我正在尝试同样的事情,并弄清楚在 Nestjs 解决 @types/猫鼬问题之前,实现猫鹭-aggreate-paginate-v2 是不可能的。

我可以建议您自己制作一个自定义函数来执行此操作或使用 https://www.npmjs.com/package/mongoose-paginate 因为该插件不需要@types/猫鼬。

 类似资料:
  • 我是java中ssl的新手,需要帮助。我的应用程序需要调用支付提供商服务器,使用他们提供的证书和我的公钥。 我的输出:

  • 问题内容: 我试图显示一个包含大量元素的表。我想对表进行分页并仅加载当前页面上显示的元素。现在,json加载了。 我在这里读到,最好在json标头中传递分页信息(currentPage,pagesCount和elementsCount)。 我如何从angular访问json头中的那些信息? 这是基本的js结构: 问题答案: 根据AngularJS $ resource文档,应该可以这样做:

  • 简介 服务提供器是所有 Laravel 应用程序引导中心。你的应用程序以及 Laravel 的所有核心服务都是通过服务提供器进行引导。 在这里,我们说的「引导」其实是指 注册 ,比如注册服务容器绑定、事件监听器、中间件,甚至是路由的注册。服务提供器是配置你的应用程序的中心。 Laravel 的 config/app.php 文件中有一个 providers 数组。数组中的内容是应用程序要加载的所有

  • 问题内容: 如何使用Go Web服务器提供index.html(或其他静态HTML文件)? 我只想要一个基本的静态HTML文件(例如,一篇文章),就可以从Go Web服务器上提供该文件。HTML应该可以在go程序之外进行修改,就像使用HTML模板时一样。 这是我的Web服务器,仅托管硬编码文本(“ Hello world!”)。 问题答案: 使用Golang net / http包,该任务非常容易

  • nestjs 一个服务如何既做微服务也做http服务器? 比如一个接口既可以做 http 又可以做微服务.不想再写一个专门的http 服务器. 接口是否可以相同?

  • 问题内容: 我正在探索Go的深度,并且我一直在尝试编写一个简单的Web应用程序来围绕所有内容。我正在尝试服务React.js应用程序。 下面是Go服务器的代码。我有默认的服务路线,效果很好。我正在努力允许将静态文件提供给该索引文件。尽管我需要静态提供JavaScript / CSS / Media文件,但我允许React App自己进行客户端路由。 例如,我需要能够将文件提供给React应用程序才