首页
学习
活动
专区
圈层
工具
发布

Node.js 搭建一个 API 接口服务(实战)

技术栈简述 网上的node框架也挺多的,用的较多的有egg,express,koa等框架,框架间各有利弊,最后均衡下来,还是决定使用可拓展性比较强的koa2来搭建项目,加上最近在学习typescript...,最后决定使用的技术栈就是 koa+typescript+mysql+mongodb来搭建项目。...上面两张图很清晰的展示了洋葱模型的工作流程,当然,具体的原理实现的话与本篇无关,就不在深入描述了,有兴趣的同学可以自己到网上搜一下哈。...Typescript 网上特别多关于“为什么要用Typescript开发”,“Typescript开发的好处和坏处”,“为什么不用Typescript开发”等等的争论和文章,有兴趣的同学也可以去说道说道哈...不过这个项目除了使用mysql,也还有用到mongo,接下来看看mongodb怎么用 使用mongoose作为mongodb的中间件 // mongoose入口 import mongoose from

9.6K32

使用Swagger2作为文档来描述你的接口信息

,就可以实现文档效果,除了可以应用到单体应用,在微服务架构中也是可以使用的,只需要整合zuul就可以实现各个服务的文档整合。...ApiBoot Swagger提供了一系列的默认配置,比如:文档标题、文档描述、文档版本号等,如果需要修改文档的默认配置,只需要在application.yml文件内对应配置参数即可实现自定义,告别了繁琐的代码配置...参数名 默认值 描述 api.boot.swagger.enable true 是否启用文档 api.boot.swagger.title ApiBoot快速集成Swagger文档 文档标题 api.boot.swagger.description...- 文档描述 api.boot.swagger.base-package SpringBoot默认package,详见AutoConfigurationPackages 生成文档的基础package...title: 接口文档 # 配置文档版本 version: v1.0 测试控制器 为了方便演示Swagger文档的强大之处,我们来创建一个测试的控制器,使用Swagger

56020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 Zod 掌握 TypeScript 中的模式验证

    实现项目中的模式验证:使用 Zod 在这篇文章中,我们将带您了解如何利用 Zod 在项目中实现模式验证。Zod 是一个功能强大的开源 TypeScript 库,旨在声明模式并执行验证。...使用 Zod 定义模式 Zod 中的一个核心概念是 z 对象,它可以让您轻松定义数据模式。...这导致您的模式与 TypeScript 类型之间紧密耦合,确保您的数据在整个应用程序中保持一致和验证。 类型安全和自动补全 使用 Zod 的一个奇妙之处在于它与 TypeScript 无缝集成。...这意味着您不仅获得运行时验证,还能在代码编辑器中获得增强的类型安全和自动补全。...validUser.id; // TypeScript 知道这是一个数字 validUser.username; // TypeScript 知道这是一个字符串 通过使用 parse,我们确保我们正在使用的对象不仅经过验证

    1.7K10

    如何使用 TypeScript 中的 as const 创建只读对象

    // 这会导致错误,因为 person 是只读的 console.log(person.name); // 输出 "Alice" 在这个例子中,我们使用 as const 创建了一个名为 person...const; deepReadonlyObject.a.b.c = 2; // 这会导致错误,因为所有属性都是只读的 在第一个例子中,deepObject 的属性仍然可以修改。...在第二个例子中,deepReadonlyObject 的所有属性,包括嵌套属性,都是只读的,无法修改。 实际应用场景 配置文件:使用 as const 定义配置文件,确保配置项不被意外修改。...例如,确保组件属性在使用过程中不会被修改。...如果你想了解更多关于 TypeScript 的高级特性和实战技巧,欢迎关注我的公众号「前端达人」。在这里,我们一起探索前端开发的无限可能,共同提升技术水平!

    1.5K10

    ✅快速构建Express服务

    使用Mongoose构建服务该方式需要在本地安装MongoDB才可以使用 TypeScript、Express、Mongoose 和 pnpm 可以快速构建后端服务,并实现增删改查以及列表查询的功能。...mongoosepnpm install --save-dev typescript ts-node nodemon @types/express @types/mongoose创建 TypeScript...models.ts:Mongoose 模型定义文件。routes.ts:Express 路由定义文件。在 models.ts 文件中定义 Mongoose 模型。...例如,我们创建一个 User 模型:import mongoose from 'mongoose';const userSchema = new mongoose.Schema({ name: {...使用内存数据库SQLite数据库该方式无需安装数据库SQLite,使用的是内存数据库以下步骤和之前的一样,不再做过多解释mkdir backendcd backendpnpm initpnpm install

    56021

    Chunking:基于大模型RAG系统中的文档分块

    或许,利用主题感知的句子嵌入来识别文档中的主题变更,确保每个块封装一个主题会是一种不错的选择。 1.回顾RAG RAG系统是一个复杂的机器学习模型,它融合了基于检索的技术和生成式AI。...生成阶段: 一旦检索到相关文档,就会使用一个通常是基于transformer的大语言模型,如 GPT-4来创建一个连贯的、与上下文相适应的响应。...此模型使用检索到的信息来确保生成的内容是准确的,而且信息丰富。 RAG 系统的混合特性使它们对于知识密集型任务特别有效,在这些任务中,检索和生成的结合极大地提高了总体性能。...在处理具有token限制的大语言模型时,它确保了每个块都符合模型的约束。在自然语言处理任务中,通常使用基于token分块来保持文本的完整性,同时遵守模型的限制。...面向主题的分块技术旨在使用句子嵌入来识别文档中主题的变化。通过标识主题转移的位置,确保每个块封装一个单一的、连贯的主题,具体包括: 句子嵌入: 句子嵌入将句子转换成高维向量,从而捕捉句子的语义。

    1.3K10

    Scan Context++:在城市环境中具有鲁棒性的位置识别描述子

    在本文中,我们通过基于结构外观(即距离传感器)识别位置来解决位置识别问题,扩展了之前在旋转不变空间描述子上的工作,该描述子完成了一个通用描述符,在俯仰运动不严重时,该描述子对旋转和平移都具有鲁棒性。...,其次,改进的算法改进了以前的暴力搜索,使用子描述符,并将搜索过程加快了一个数量级。...A 扫描上下文描述符 这里介绍一种新的空间描述符,名为扫描上下文描述符(SCD),该方法从分割原始测量数据开始,并使用鸟瞰图(BEV)将其投影到离散化的容器中,在划分BEV bin时,考虑了两种类型的垂直基座...比较三个样本CCs,内容保留在每个列中,而节点之间只移动列顺序,描述符中由运动引起的变化在描述符空间中显示为SCD列顺序偏移 B 三阶段位置识别 我们的位置识别算法由三部分组成:(i)使用检索键进行位置检索...与他们不同的是,我们在不事先知情的情况下追求全局定位精度,我们只依赖于描述符本身,同时通过引入子描述符来最小化全局搜索的计算成本。

    1.4K10

    你真的了解mongoose吗?

    如果不需要该版本号,在 schema 中添加{ versionKey: false}即可。 创建模型 使用我们的 schema 定义,我们需要将我们的userSchema转成我们可以用的模型。...字段不存在的文档Model.find( { age: { not: { lte: 24 }}})字段相关操作符符号描述exists匹配存在指定字段的文档type返回字段属于指定类型的文档数组字段的查找符号描述...没有符合查询条件的数据,result 返回 null。 更新 每个模型都有自己的更新方法,用于修改数据库中的文档,不将它们返回到您的应用程序。...ref 选项告诉 Mongoose 在填充的时候使用 User model。所有储存在 answerer 中的 _id 都必须是 User model 中 document 的 _id。...(https://github.com/Jack-cool/rest_node_api)中对于mongoose的使用做的简单的总结。

    43.9K30

    Mongoose学习参考文档

    Schema——纯洁的数据库原型 1.1 什么是Schema 我理解Schema仅仅只是一断代码,他书写完成后程序依然无法使用,更无法通往数据库端 他仅仅只是数据库模型在程序片段中的一种表现,或者是数据属性模型...remove方法 4.Sub Docs   如同SQL数据库中2张表有主外关系,Mongoose将2个Document的嵌套叫做Sub-Docs(子文档)   简单的说就是一个Document嵌套另外一个...  如果children是parent的子文档,可以通过如下方法查询到children var child = parent.children.id(id); 4.2 新增、删除、更新   子文档是父文档的一个属性...,因此按照属性的操作即可,不同的是在新增父类的时候,子文档是会被先加入进去的。   ...done); }); 8.3 中间件特点   一旦定义了中间件,就会在全部中间件执行完后执行其他操作,使用中间件可以雾化模型,避免异步操作的层层迭代嵌套 8.4 使用范畴 复杂的验证 删除有主外关联的

    25.3K90

    基于 Express 应用框架的技术方案选型浅谈

    WEB 应用的标准框架,大多数工程师都很熟悉他的设计思想(极简的内核,但能让你用各种中间件来扩展他的功能) Koa :设计思想非常类似 Express,区别在于它是使用 ES6 中的 generator...Mongoose Redis Sokect.io 这是一个简单的服务端多页应用示例,使用 Ejs 模板引擎进行页面渲染,渲染完成后交由 Anguar 进行页面的响应操作(发送请求使用 Angular...Vue 技术方案选型 2018年6月,使用 Vue 设计了服务端渲染的 Express 应用,大致技术选型如下: Mongoose Nuxt Vue lokka Muse-UI 客户端和服务端同构代码的...项目目录结构 在 Nuxt 的目录结构中,服务端引入的同构代码放在.nuxt 目录中,是 Webpack 打包后的代码文件,因此如果服务端不使用特殊的语法,完全不需要 Backpack 配置。...# 项目打Tag脚本 └── tsconfig_node.json # TypeScript配置文件 运行脚本设计 在package.json中的配置脚本如下: "build

    7.7K30

    python学习笔记6.5-类中描述符的使用

    之后,底层的实例字典会根据需要适当的进行调整。 要使用一个描述符,首先要创建一个描述符类,然后把描述符的实例放在类的定义中作为类变量来使用。...要执行所请求的操作,底层的实例字典(即dict属性)会根据需要进行适当的调整。描述符的self.name属性会保存字典的键值,通过这些键可以找到储存在实例字典中的实例数据。...描述符常常作为一个组件出现在大型的编程框架中,其中还会涉及装饰器或者元类。正因为如此,对于描述符的使用可能隐藏很深,几乎看不到痕迹。...:如果只想访问某个特定的类中的一种属性,并且做一些自定义处理,那么最好不要编写描述符来实现。...对于这样的任务,使用@property函数更加简单。针对于大量重用的代码的情况下,使用描述符更加有用(例如,我们需要在自己的代码中大量使用描述符提供的功能,或者将其作为库来使用)

    78190

    react+koa2+mongodb实现留言功能(可体验)

    留言功能在社交中占据很重要的作用。这里实现的留言功能,参考微信朋友圈的方式: 用户发送一个TOPIC话题,读者可以在该话题下面进行评论,也可以对该话题下的留言进行评论。...前端实现 使用技术 react ant design typescript 在上面的截图中,很明显,就是一个表单的设计,外加一个列表的展示。...Comment组件进行递归调用 列表是对用户发表的主题,留言以及子留言的展示。...后端 使用的技术: mongodb 数据库,这里我使用到了其ODM mongoose koa2 一个Node框架 pm2 进程守卫 apidoc 用来生成接口文档(如果你留意体验站点,右上角有一个..."文档"的链接,链接的内容就是生成的文档内容) 这里的搭建就不进行介绍了,可以参考koa2官网配合百度解决~ 其实,本质上还是增删改查的操作。

    1.2K10

    我为什么喜欢NestJS

    上文提到的几个框架对项目代码的架构要么是没约束,要么就是约束比较弱或者看起来很别扭。相比之下Nest的实现就很简洁,用起来很顺手。具体细节将在下文进行描述。...类型系统是后端开发很重要的一环,Nest是使用TypeScript实现的框架,因此原生就支持TypeScript,而且还大量使用了注解,熟悉 Spring 的朋友会感到十分亲切。...另外几种切面和请求处理的顺序见下图: 这里的Middleware就是Express原生的,其它几个切面的用法见官方文档,在此不多作介绍。...连接数据库 例子中使用mongoose连接和操作本地MongoDB数据库。为了更方便使用,Nest提供了@nestjs/mongoose包,对mongoose包装了一层,使其更符合Nest的使用风格。...文章的写作目的是为框架选型者提供一个快速的参考,也为对Nest感兴趣的人提供感性的认识。如果想更详细的了解Nest用法,请看官方文档。

    2.3K20

    初试MongoDB学习之Mongoose的使用

    Mongoose本质是一个对象文档模型(ODM)库, 他对Node原生的MongoDB模块进行了一部优化封装,并且提供了更多的功能。...#Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...}) #mongoose基本使用 #mongoose的几个新的对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。...mongoose中任何任何事物都是从Schema开始的。每一个Schema对应MongoDB中的一个集合(collection)。Schema中定义了集合中文档(document)的样式。

    7K20

    Nodejs和Mongodb的连接器Mongoose

    同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。 2. Mongoose能做什么?...文档 —— 是MongoDB的核心概念,是键值对的一个有序集,在JavaScript里文档被表示成对象。同时它也是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具表现力。...集合 —— 由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。...Schema简述 Schema —— 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力,仅仅只是数据库模型在程序片段中的一种表现,可以说是数据属性模型(传统意义的表结构...拥有了Model,我们也就拥有了操作数据库的金钥匙,在后面的内容中,我们就会学习使用Model来进行增删改查的具体操作,所以,一定要熟悉他的创建格式哟!

    7.1K41

    大模型知识库中的文档预处理的优化问题

    在基于大模型的知识库问答应用中,提升效果的点主要有: 1. 优化文档预处理; 2. 大模型的预训练及微调等; 3. 大模型的提示词优化; 4....使用专有数据训练embedding模型; 向量检索算法通常没什么可优化的,因为向量数据库里通常都已经实现了。 本文重点要讲的是怎么优化文档预处理。...表格数据的问题 普通段落通常还是比较好处理的,但是对于表格就非常复杂,而表格在文档中也可能有很多复杂的情况,例如合并单元格甚至嵌套表格、表格跨页等。...结构化就是变成有层级关系的json数据,文本化就是让大模型用文本来描述表格的内容,而这个文本化我觉得可能是更好的方式。不过我估计,这得几年后才比较可行。 2....图像问题 文档中除了有表格这种复杂的结构,还可能会有图像。

    1.9K20
    领券