GraphQL Resovler的执行与实践

本文首先介绍GraphQL Server对于查询的执行过程,然后结合实际开发使用GraphQL的相关特性。 GraphQL Execution 在执行查询前,GraphQL会先通过类型系统来判断查询是否有效(这里的查询涵盖query和mutation),即查询的字段是否存在、参数的类型是否正确、对象类型是否指定子字段等的规则。下图列举的是gprahql-js库中指定的全部验证规则。 »

GraphQL:一种不同于REST的接口风格

从去年开始,JS算是完全踏入ES6时代。在React相关项目中接触到了一些ES6的语法。这次接着GraphQL这种新型的接口风格,从后端的角度接触ES6。 这篇文章从ES6的特征讲起,打好语法基础;然后引用GraphQL的规范说明;最后实验性质地在node环境下实践GraphQL这种接口风格,作为接下来重构接口工作的起点。 ES6 GraphQL »

在Docker搭建Node.js+mongoDB开发环境

这周通过docker将整个技术栈更新一下,首先介绍Docker的基本概念。 Docker是在LXC上构建的容器引擎。我这里主要讲起当作更加灵巧的虚拟机用。Docker主要有如下4个概念,简单介绍一下。 镜像:类似虚拟机快照,大多都是在现有工具镜像上创建新镜像。我今天使用的都是官方的镜像。 容器:从镜像中创建应用环境, »

从MongoDB入门到编写数据库相关API

这篇文章为实验室开会本人讲解mongoDB的讲义,主要讲述两个内容:MongoDB的入门和Nodejs编写相关API入门。内容比较简单,但是实践性比较大,最终的目的是实验室的师弟师妹们能够通过编写Node将‘从数据库增删查改数据’——‘提供给前端调用的API’这个后端工作流实现。内容有些欠缺地方,还需大家指点。 前期准备— »

使用Async进行流程控制

Async[1]提供了一些使用的工具,比如对象操作以及流程控制。我使用它的原因主要是解决js中回调函数嵌套过多的问题,在一边使用一边学习中习得了更多的功能的使用。在初识Promise就已经提及Async回调函数的控制内部机制。本文主要总结在项目中用到Async控制流程的部分,其他API的使用可以查看官网。 1. waterfall 瀑布流 »

MongoDB更新操作符的实践

和查询操作符类似,更新操作符处理最复杂的对象也是数组。我们按照上一篇文章的方法,先总结我所用到的操作符,再结合项目中遇到的实例组合使用操作符。 1. 字段更新操作符 上图描述十分清晰地阐明了使用场景。$inc不仅可以增加还可以减少字段的值。$setOnInsert则需要和{ upsert: true »

MongoDB查询以及投影操作符的实践

当使用MongoDB提供复制操作时,需要简单的CURD操作基础上使用一些操作符(如同$eq这样的操作符),mongoDB官网文档[1]有其详细介绍。需要注意的是,Node端所使用的Mongoose工具,在API上与原生的驱动还是有细微的区别。,本文结合mean.js( »

初识Promise

对于mongoBD的异步控制,在项目实践中使用了async库来控制复杂的异步回调函数处理。很有幸参加i5ting老师的《Node.js最新技术栈之Promise篇》微课堂。老师主要从promise的起源、实现以及实践和展望几点简述使用Promise的心得。有所收获,现在总结如下,其中例子为老师提供。 Why »

Web应用分页功能的简单实现

Web应用的一个简单分页功能,前端直接使用bootstrap的Pagination指令,后端通过nodejs的mongoose驱动skip()和limit()方法来实现分页,也一并把select、sort查询操作总结一些。 Pagination的使用 bootstrap的这套工具[1]非常好用,直接将标签指令写到指定地方即可。 »

Node.js的试炼:Email的获取

上周简单地试用了几个邮件获取协议的Node modules来实现获取qq邮件的邮件数据的功能,以备接下来的工作使用。 POP3 POP3全称为Post Office Protocol version3,是TCP/IP协议族的一员,由RFC 1939定义。 »

MongoDB图片存储测试

Web应用中对于图片的存储方案一直是存放在CDN或者服务器的文件系统中,通过索引数据库中的文件路径,分步获得资源后再响应客户端的请求。MongoDB这种文档型数据库通过将数据直接存放到文件的设计无疑可以给我们提供一些新思路。并且对于直接存入MongoDB也有两种方式:直接存入Collection或者是存入GridFS。Collection在以前的文章介绍过不再冗述,对于GridFS还需要好好简述一下它的存储逻辑,这几天通过MongoDB的Node.JS Driver实现了一个粗糙的测试脚本。本文先介绍MongoDB提供的GridFS解决方案, »