Node.js+Express.js+Postgresql的牛刀小试

作为一个合格的Developer写一个自己的API来满足脑袋里天马行空的想法是必须的,虽然并不是非常专业的后台工程师,更不是高大上的数据库工程师,但我有一颗什么都想插一脚不安分的小内心,所以这次就来分享给大家一个入门级别的后台。麻雀虽小,五脏俱全,虽然很简单,但是我们该有的什么都有。


先来简单介绍一下

1)编程语言JavaScript,下载Nodejs,Postgresql非常简单,这里两个链接供参考http://www.runoob.com/nodejs/nodejs-install-setup.html

https://www.yiibai.com/postgresql/install-postgresql.html

友情提示,安装完之后不要忘记添加环境变量,安装成功可以来检查一下

利用终端检查版本号

2)Expressjs是一个轻量级Web框架,官方链接 https://expressjs.com/zh-cn/,使用Nodejs直接操作Postgresql需要安装一个package,官方链接https://node-postgres.com/

3)额外的package:body-parser是非常常用的一个express中间件,作用是对post请求的请求体进行解析,参阅https://www.cnblogs.com/chyingp/p/nodejs-learning-express-body-parser.html


搭建一个简单的Express框架

先来看一下代码

1)端口5000,设置头文件解决万年特别坑人的跨域问题(不安全,但是适合搞事情,header还有一系列可设置参数,请根据需求自行学习

2)bodyParser是用来解析post传过来的json,或者form,text等content,limit如果不设置是有一个默认值,如果你的数据量非常大超过了默认值,服务器就会拒绝访问

2)你的console看起来应该是这样,表示正在监听

3)我们来发起一个get请求,渲染一个页面,express的模板引擎是ejs,一个依赖注入的可兼容html语法的express专用可视化。这个有点复杂,我就简单展示一下,以后再慢慢来解释。

当发起get请求,渲染/views/pages/index,ejs

因为设置了路由所以url看起来是这样

我就是这么俗

我的超级简单index.ejs

并没有数据注入完全html语法

配置数据库

1)引入package

有没有很简单

2)Get请求url:localhost:5000/retrieveFeature/

假设Get传了参数,前面引入的body-parse可以帮助我们很简单解析数据,不需要人工解析url.

我这里选择的是创建pool进程池,进程池可以重复使用,检测出来用户后执行操作,操作完毕释放资源,一定要释放,释放。。。不然进程池就满了,所有用户都挤不进来啦。

3)Post请求url:localhost:5000/getlocation/ ;data:{location:xxx,postal:yyy}

同样解析出传入参数,并定义两个储存变量

根据客户端传入参数查找数据库对应数据,

执行完操作后还是切记要释放你的连接,不然就要交通堵塞了,CPU分分钟爆满。


数据库常见操作

数据四大基本操作:增删改查

现在我们来create一个table,名字叫testtable,设置id自增主键,type为bigserisel,两个字段col_1,col_2,type均为Character varying一个自动记录当前时间的时间戳

id自增
时间戳自动记录


1)增--INSERT

基本用法:INSERT INTO (数据表名称)VALUES ( $1,$2..可理解为占位)RETURNING 字段1,字段2( 你想返回的字段,也可以不返回), [实际参数1,实际参数2.,..], (err,data)=>{回调}

console.log后台显示如下

再来看看客户端网页的情况

再来检查一下数据是否插入成功

我多刷了几次网页,多插入了几条数据

2)删--DELETE

基本用法: DELETE FROM 数据表名称  WHERE 限制条件 [RETURNING * 返回删除记录(可不要)]  

检查一下数据库

id=4的记录以及被删除了

3)改--UPDATE

基本语法:UPDATE 数据表名称 SET 字段1=,字段2= [WHERE 筛选条件 RETURNING 需要返回的字段](非必需)

检查一下数据库:

最大id的对应字段值已经更改成功

4)查--SELECT

基本语法:SELECT 字段 FROM 数据表名称 [ WHERE 筛选条件 ORDER BY 什么顺序](非必需)

查找col_1='hello'的记录有很多,我们选择按找id倒序排列的第一个

对比一下数据库:

满足查找条件

总结一下:

1)现在我们有了自己的小后台,虽然很简单但是基本功能都在,希望在此基础上方便大家一起搞事情,毕竟我的api我做主

2)Express并没有这么简单,这只是很小很小的一部分,view部分以及router,ejs的网页渲染还会有后续文章(我也在不断探索学习中)

3)数据库是要花时间专门来研究的,语法也是很多蛮复杂的,推荐看一下官方文档http://www.postgresqltutorial.com/,会开启另一片天地


奉献了周六的一个下午,把上面的代码每一段都完完整整的跑了一遍,亲测可用。

我在尽量把文章写的简单轻松一点,编程本来就没有那么难,或许在配置和debug的过程中并没有看起来这么容易,那就多读几遍document,多试试,最后都能解决,因为不能解决的问题,压根不会发生。

最近我一直在跟不同的计算机操作系统死磕,经理希望我可以填补一下知识空白区,祝我顺利进阶成功吧。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容