首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于 egg.js 构建 graphql api 服务

package: '@switchdog/egg-graphql', }, 配置插件 通常插件都会有一些配置项,/config/config.default.ts中配置即可: config.graphql...' ]; 配置完成之后,每个落到 /graphql的请求都会触发 GraphQL Schema 的查询。...当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源,资源会发起一个跨域 HTTP 请求。...使用 graphql 或 rest 端点,实际上不必担心使用 CSRF 保护。对服务的请求应该是无状态的,并且不真正依赖Cookie或会话数据。...定义字段需要注明类型,这也是 graphql 的特点之一,是支持强类型的。如果非空,就在类型后面跟上一个!号。graphql 还包括枚举类型,列表和自定义类型。

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

使用node和express+mongodb实现数据增删改功能

cnpm install nodemon -g 在这里是全局安装 2.7:配置package.json启动命令,开发环境的时候,直接可以通过cnpm run app来监听每次修改node的变化...,nodemon我们已经全局安装过了,可以在任何地方都可以使用,只要我们每次修改代码都会发生变化,这样我们就不会手动输入命令了 3.数据库mlab创建 3.1:mlab是MongoDB...链接数据库 cnpm install mongoose 4.2然后在你的入口文件引入(app.js), const mongoose require('mongoose') 4.3我们的根目录创建一个...使用mongoose链接数据库,我们的根目录引入config下面的db文件。...>>> api >>> useinfo.js文件,这个用于存放我们的请求接口的路由文件;   5.1.1userinfo文件中引入express和路由,先写一个get请求方法,  5.2.2

1.6K40

Mongoose 实现关联查询和踩坑记录

本文源自工作中的一个问题,使用 Mongoose 做关联查询发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索这块的解决方案也并不是很多,经过一番查阅、测试之后...内嵌是把相关联的数据保存在同一个文档内,我们可以用对象或数组的形式来存储,这样好处是我们可以一个单一操作内完成,可以发送较少的请求到数据库服务端,但是这种内嵌类型也是一种冗余的数据模型,会造成数据的重复...Virtual 和 populate 实现 Mongoose 的 populate 方法默认情况下是指向的要关联的集合的 _id 字段,并且 populate 方法里无法更改的,但是 Mongoose...可以创建 Schema 第二个参数 options 中设置,也可以使用创建的 Schema 对象的 set 方法设置。...Mongoose 关联查询如何关联一个非 _id 字段,一种方式是直接使用 MongoDB 原生提供的 Aggregate 聚合管道的 lookup 阶段来实现,这种方式使用起来灵活,可操作的空间更大

26.3K20

MongoDB增删改查操作

不想要的值字段后面添加 - 再加属性 比如去掉默认的_id User.find().select('name email -_id').then(result => console.log(result...mongoose验证 创建集合规则,可以设置当前字段的验证规则,验证失败就则输入插入失败。.../add,呈现表单页面,并实现添加用户信息功能 当用户访问/modify,呈现修改页面,并实现修改用户信息功能 修改用户信息分为两大步骤 1.增加页面路由 呈现页面 1.点击修改按钮的时候...将用户ID传递到当前页面 2.从数据库中查询当前用户信息 将用户信息展示到页面中 2.实现用户修改功能 1.指定表单的提交地址以及请求方式 2.接受客户端传递过来的修改信息...找到用户 将用户信息更改为最新的 当用户访问/delete,实现用户删除功能 实现代码: user.js const mongoose = require('mongoose');

19.8K30

express-art-template模板引擎

// 当用户访问/add,呈现表单页面,并实现添加用户信息功能 // 当用户访问/modify,呈现修改页面,并实现修改用户信息功能 // 修改用户信息分为两大步骤 //...1.增加页面路由 呈现页面 // 1.点击修改按钮的时候 将用户ID传递到当前页面 // 2.从数据库中查询当前用户信息 将用户信息展示到页面中 //...2.实现用户修改功能 // 1.指定表单的提交地址以及请求方式 // 2.接受客户端传递过来的修改信息 找到用户 将用户信息更改为最新的 // 当用户访问...(req, res) => { // 请求方式 const method = req.method; // 请求地址 const { pathname, query }...= require('mongoose'); // 创建用户集合规则 const userSchema = new mongoose.Schema({ name: { type

94540

使用 ServerLess, Nodejs, MongoDB Atlas cloud 构建 REST API

不利于上下文重用:传动程序启动之后常驻内存,不存在冷启动问题,而 ServerLess 是基于事件驱动的,第一次请求来了之后会下载代码、启动容器、启动运行环境、执行代码,这个过程称为冷启动,但是以 AWS...Lambda 为例,函数调用之后执行上下文会被冻结一段时间,我们上面的例子中每次函数执行都会初始化数据库链接,这是一个很消的操作,我们可以将这段逻辑放在函数之外,利用上下文重用,开发层面可以做进一步优化...每个 schema 都会映射到一个 MongoDB collection ,定义这个 collection 里的文档构成。...); 编写业务逻辑 Books 将业务逻辑处理放在 Books 这个类里面,并且可以不依赖于外部的任何服务,this.BooksModel 这个测试可以模拟数据进行传入。...对于这种初始化链接的操作,尽量放在函数之外,避免每次函数来临都要去初始化这样一个耗时的操作,我们可以利用函数的执行上下文重用,启动环境执行代码去初始化我们的数据库链接,例如 handler.js 头部的

2.8K20

深入浅出mongodb之实战

我们执行node文件的时候,如果修改了node文件,每次执行都需要重新启动项目才行,为了方便我们可以使用nodemon来监听项目的改动,不再需要重复启动项目,这么方便的东西用起来能不香吗??...数据库 安装 npm i mongoose -S 完成安装之后我们需要在app.js里引入并且配置数据库 //app.js //引入数据库 const mongoose = require('mongoose...,如果遇到了不同源请求,会先询问来自哪个源对源进行检查之后,做出响应。...const mongoose = require("mongoose"); const Scheme = mongoose.Schema; const ObjectId = mongoose.Types.ObjectId...的文件夹,创建index.js文件: const mongoose = require("mongoose"); const model = mongoose.model.bind(mongoose);

1.7K10

Koa2+MongoDB+JWT实战--Restful API最佳实践

每次请求必须包括所有信息,不能依赖上下文信息。服务端不用保存会话信息,提升了简单性、可靠性、可见性。 缓存(Cache) 所有服务端响应都要被标为可缓存或不可缓存,减少前后端交互,提升了性能。...拿到路由分配的任务并执行 koa 中是一个中间件 为什么要用控制器 获取 HTTP 请求参数 Query String,如?...客户端发起非登录请求,假如服务器给了 set-cookie,浏览器会自动在请求头中添加 cookie。 服务器接收请求,分解 cookie,验证信息,核对成功后返回 response 给客户端。...sha1Stringfalsemultipart是否支持多文件上传BooleantrueonFileBegin文件上传前的一些设置操作Functionfunction(name,file){} koa-json-error 写接口...简单的说,Mongoose就是对node环境中MongoDB数据库操作的封装,一个对象模型(ODM)工具,将数据库中的数据转换为JavaScript对象以供我们应用中使用。

9.1K42

使用NodeJs(Express)搞定用户注册、登录、授权

看到B站上全栈之巅-Node.js+Vue.js全栈开发深度爱好者和实践者,感觉Johnny博主的系列视频讲解得不错,其中看到一个视频是1小搞定NodeJs(Express)的用户注册、登录和授权,介绍了...插件,它是用于VSCode中发起http请求的一个插件,可以通过代码的方式发起http请求,包括get、post、put去请求。...类似于Postman,Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。其中Rest-Client插件VSCode中如下图所示: ?...\server.js开启服务端,服务器会在对应的3001端口上监听客户端的http请求,然后打开test.http文件,相应的登录、注册、查询所有用户的请求,使用Ctrl+鼠标单击按住Send Request...,发起对应的get、post请求,其中登录的请求VSCode中如下图所示: ?

9.4K10

GraphQL 基础实践

GraphQL 中,有如下几种标量类型:Int, Float, String, Boolean, ID ,分别表示整型、浮点型、字符串、布尔型以及一个ID类型。...根据本例中的 Schema 定义,我们查询 searchdata的参数必须为 { term: "Deepwater Horizon" } 别名(Alias) ?...Resolver 对应着 Schema 上的字段,当请求体查询某个字段,对应的 Resolver 函数会被执行,由 Resolver 函数负责到数据库中取得数据并返回,最终将请求体中指定的字段返回。...当请求体查询movie,同名的 Resolver 必须返回Movie类型的数据。当然你还可以单独为name字段使用独立的 Resolver 进行解析。...const mongoose = require('think-mongoose');module.exports = [mongoose(think.app)]; 接下来, adapter.js 中配置数据库连接

12.8K20

创建一个DIY的APM监视Node.js中的Web应用程序的性能

本文中,我们将构建一个工具来监视一个简单的Node.js应用程序应答HTTP请求MongoDB中花费多少时间。...我们来重写一些方法 如果我们不想更改应用程序代码,则需要更改其依赖项的代码。...让我们编写一个包装函数来执行返回一个promise的函数: 每次调用方法,我们都会为每个性能度量创建一个唯一的ID。这将确保两个定时操作之间不发生碰撞。...为了跟踪HTTP请求,我们将从Node.js core覆盖类Http.Server上的emit方法: 现在,对于Http.Server的所有实例,当使用请求事件调用emit方法,会创建一个新的context...由于我们的Async Hook会将这个context传播给子资源,因此每次调用AsyncHooks.executionAsyncId()都会返回一个有效的context映射关键字。

1.5K80
领券