2018即将过去,2019即将来临,前端技术不断在在更新,学的东西越来越多。我们只有不断的学习,才不能被淘汰。在前后端分离的一个时代,后端提供接口,前端调用接口,逻辑判断,每个都是独立的工作。如果自己在空余的时间,想学习新的知识,却没有好的接口,只能写写假的json数据。或者网上开源的数据库,mock,野狗数据库,firebase,或者使用本地的json-server搭建本地数据库使用也是完全没有问题的,也可以正常的实现数据的接口请求。

 今天小编就写一遍关于node写接口的文档,会从环境搭建,数据库链接,数据模型,接口文档以及到测试,一步一步的来,尽最大可能写好,让每一位读者都能看懂,文章可能过程,希望慢慢理解

2018最后的一篇博客,希望在2019继续努力

1.准备工作

  • postman接口测试工具,
  • node安装
  • mlab数据存储
  • mongodb数据库

2.node + express环境搭建

2.1环境搭建之前,首先要检查自己电脑是否安装node环境,如果没有安装,先安装node环境.

2.2在自己电脑创建一个目录文件,打开自己终端,先进行初始化 cnpm init(在这里使用了cnpm国内镜像,如果没有安装,请自行安装cnpm);

初始化之后会出现下面这个界面,会在我们的文件中生成一个package.json文件;

2.3在自己根目录创建一个入口文件,app.js文件或者通过终端命令touch app.js创建一个文件,

2.4这时候我们可以搭建服务器环境,但是需要依赖express,这时候我们就需要安装express

cnpm install express

2.5工作环境准备好之后,需要在我们的入口文件引入express,并创建一个app实列,请看下面,

  2.5.1:port是我们的端口号,app.listen是监听端口号运行

  2.5.2:然后通过node app.js运行,查看服务器是否正常运行成功,然后在浏览器出入http://localhost:5000,就可以查看运行的结果了

2.6但是我们每次修改代码的时候都要重新运行node app.js,这个时候我们只需要安装nodemon,监听node变化的一个工具

cnpm install nodemon -g  在这里是全局安装

2.7:配置package.json启动命令,在开发环境的时候,直接可以通过cnpm run app来监听每次修改node的变化,nodemon我们已经全局安装过了,可以在任何地方都可以使用,只要我们每次修改代码都会发生变化,这样我们就不会手动输入命令了

   

3.数据库mlab创建

3.1:mlab是MongoDB提供的免费存储的数据库,使用的时候必须先注册,才可以使用,这个mlab需要翻墙注册,注册登录之后会出现下面的界面

3.2然后点击Create  new 创建   》》》》  然后选择下面的两个,amazon和SANDBOX最后点击右下角CONTINUE,会跳转下一步

3.3在这个界面选择国家地区,选择US EAST和Europe都可以,然后点击CONTINUE,会跳转下一步

3.4在这个界面,需要我们输入一个名字,名字随便输入,然后点击CONTINUE,会跳转下一步,

3.5在下一个页面,然后在点击SUBMIT ORDER,这样我们就创建好一个数据库,然后点击进入数据库中

3.6进入我的数据库中,黄色警告提示我们需要创建一个用户信息,也就是我们最后链接的用户名和密码,点击add会弹出一个框,然后我门添加用户名和密码就可以了,最后点击CREATE,这样我们的数据库就已经创建完成了,接下来我们可以使用node链接我们的数据库了

4.node链接MongoDB

4.1安装mongoose链接数据库

cnpm install mongoose

4.2然后在你的入口文件引入(app.js),

const mongoose require('mongoose')

4.3在我们的根目录创建一个config文件,在confing中创建一个db.js文件,这个文件存放我们的数据库的地址,连接数据库的地址放在一个单独的文件,把我们服务器的地址引入过了就行了,修改用户名和密码就行了,

4.4使用mongoose链接数据库,在我们的根目录引入config下面的db文件。然后通过mongoose链接数据,最后在控制台可以看到我们已经链接成功了,到现在为止,数据已经链接配置好了,接下来接开始写接口

5.接口路由搭建和数据模型

5.1在我们的根目录下创建一个router >>> api >>> useinfo.js文件,这个用于存放我们的请求接口的路由文件;

  5.1.1在userinfo文件中引入express和路由,先写一个get请求方法,

   

  5.2.2需要在我们的app.js文件引入userinfo.js文件,并使用router中间件,不然不会生效

/api/userinfo:这个相当于我们访问的接口地址

//引入userinfo.js
const userinfo = require('./router/api/userinfo') //使用router中间件
app.use('/api/userinfo',userinfo) 然后就可以在浏览器输入http://localhost:5000/api/userinfo

 5.2postman接口测试工具使用

  5.2.1我们已经写好一个get的测试请求,接下来我们进行测试,我们可以通过postman这个工具进行测试,下载好之后需要登录注册,

  下载好之后打开这个工具,第一步输入我们的地址,点击send,就能看到我们请求的结果是否正确了

5.3创建数据模型

5.3.1创建我们的数据模型用于存放数据字段名。在根目录创建models文件,然后创建Userinfo.js文件,用于写数据字段模型。

创建了name,age,sex,address,date几个字段名,(使用什么字段创建什么字段,在这里先使用这么多)

mongoose.Schema是一个MongoDB对象建模工具,

每一个Schema对应一个mongoDB collection 并且在那个collection里面定义了documents的模型。

5.4编写路由接口,实现数据的添加,删除,修改功能

在我们路由文件userinfo引入数据模型Userinfo文件,这样我们就可以查询数据库中是否有这些字段名了

const Userinfo =require('../../models/Userinfo')

5.4.1添加用户信息

  添加用户信息肯定需要使用post去添加用户信息了,这时候我们需要安装第三方依赖body-parser

cnpm install body-parser

  5.4.2在安装完之后,需要在app.js文件引入,并使用,这样我们就可以使用post进行数据存储了

const bodyParser = require('body-parser')

//使用body-parser中间件
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

5.4.3添加数据接口,。先创建一个空的对,判断数据是否存在,如果不存在的话,通过new Userinfo添加数据库中,Userinfo就是我们上面引入的模型

// $route  GET api/userinfo/add
// @desc 添加用户数据
// @access public
router.post('/add',(req,res) => {
const UserName = {};
if(req.body.name) UserName.name = req.body.name;
if(req.body.sex) UserName.sex = req.body.sex;
if(req.body.age) UserName.age = req.body.age;
if(req.body.address) UserName.address = req.body.address; new Userinfo(UserName).save().then(user => {
res.json(user);
});
})

5.4.4使用postman接口测试,请求接口类型是post请求,输入我们的接口地址,添加字段,点击send,就可以看到我们添加数据的字段了。

5.5获取所有数据

5.5.1通过get请求,获取数据库中所有的数据信息

// $route  GET api/userinfo
// @desc 获取所有的数据
// @access public
//find()是mongodb的数据库语法
router.get("/", (req,res) => {
Userinfo.find().then(user => {
if(!user) {
return res.status().json("没有任何数据存在")
}
return res.json(user)
}).catch(err => {
return res.status().json(err)
})
});

5.5.1通过postman测试接口,http://localhost:5000/api/userinfo,就可以获取到我们数据库中所有的信息了,

5.6获取单个用户信息

5.6.1:通过根据用户的id去获取单个用户的信息

// $route  GET api/userinfo/:id
// @desc 获取单个的数据
// @access public
router.get('/:id',(req,res) => {
Userinfo.findOne({_id:req.params.id}).then(user => {
if(!user) {
return res.status().json("没有任何数据存在")
}
return res.json(user)
}).catch(err => {
return res.status().json(err)
})
})

5.6.2通过postman测试接口,http://localhost:5000/api/userinfo/5c27929b2a87821914f8b195,就可以获取到我们数据库中所需要的信息

5.7编辑用户信息

5.7.1编辑用户信息,也是根据用户的id去更新数据,通过monoose提供的findByIdAndUpdate去更新数据库

// $route  GET api/userinfo/exit/:id
// @desc 编辑用户信息
// @access public router.post('/exit/:id',(req,res) => {
const UserName = {};
if(req.body.name) UserName.name = req.body.name;
if(req.body.sex) UserName.sex = req.body.sex;
if(req.body.age) UserName.age = req.body.age;
if(req.body.address) UserName.address = req.body.address;
//更新数据
Userinfo.findByIdAndUpdate({ _id: req.params.id },
{ $set: UserName }, { new: true })
.then(user => {
if (!user) {
return res.status().json("数据不存在");
}
res.json(user);
})
.catch(err => {
return res.status().json(err);
});
})

5.7.2这是我们更新第一个字段的用户信息,把张三的名字改成张飞,在postman中可以看到我们成功更新数据

5.8删除用户信息

5.8.1在这里,我们只删除根据用户的id删除,不会实现全部删除。

// $route  GET api/userinfo/delete/:id
// @desc 删除用户信息
// @access public router.delete('/delete/:id',(req,res) => {
Userinfo.findByIdAndRemove({_id:req.params.id}).then(user => {
user.save().then(user => {
res.json(user)
})
}).catch(err => {
return res.status().json(err)
})
})

5.8.2我们通过postman测试http://localhost:5000/api/userinfo/delete/5c27929b2a87821914f8b195,成功姓名为张飞的数据删除成功

以上都是我们使用node+express实现的数据的添加,删除,修改功能。希望这篇博客能够帮助你。提前祝愿2019前端小伙伴元旦快乐,2019更上技术更上一层楼。

使用node和express+mongodb实现数据增删改功能的更多相关文章

  1. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  2. express 对数据库数据增删改查

    接着 http://www.cnblogs.com/cynthia-wuqian/p/6560548.html (1)概念 Schema(属性) :一种以文件形式存储的数 据库模型骨架,不具备数据库的 ...

  3. Node.js Express+Mongodb 项目实战

    Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...

  4. Node.js+Express+MongoDB数据库实现网页注册登入功能

    通过 Node.js + Express + MongoDB 实现网页注册账号 和 登入账号的功能 项目准备: 1: 事先准备好项目的页面 (首页页面 index.html)(登入页面 login.h ...

  5. 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)

    本文利用MongoDB官方发布的C#驱动,封装了对MongoDB数据库的增删改查访问方法.先用官方提供的mongo-csharp-driver ,当前版本为1.7.0.4714 编写数据库访问帮助类 ...

  6. salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的标签相对简单,如果需要深入了解VF相关知识以及标签, 可以通过以下链接查看或下载 ...

  7. C#操作Excel数据增删改查(转)

    C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...

  8. C#操作Excel数据增删改查示例

    Excel数据增删改查我们可以使用c#进行操作,首先创建ExcelDB.xlsx文件,并添加两张工作表,接下按照下面的操作步骤即可 C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文 ...

  9. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

随机推荐

  1. 01-Javascript简介

    Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) JavaScript的组成 Java ...

  2. 【repost】Javascript操作DOM常用API总结

    Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认 ...

  3. 王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解

    刚才看了一下,群里王家林老师又更新课程了,真为王老师的勤奋感到佩服,于是迫不及待的下载下来观看学习.本期讲的是关于scala并发编程的react.loop代码实战. 信息来源于 DT大数据梦工厂微信公 ...

  4. mod与%的区别

    mod与%的区别 %与mod的区别: %出来的数有正有负,符号取决于左操作数,而mod只能是正: 所以要用%来计算mod的话就要用这样的公式:a mod b = (a % b + b) % b: 括号 ...

  5. 1.java面向对象编程三大特性之封装

    封装即把一个对象的属性.行为等放在一个实体类中隐藏起来,不允许外部对其进行修改,但是被封装的属性.行为会对外提供一个接口与外部联系,这个对外的接口通常情况下就是set().get()方法.可以通过se ...

  6. linux-python在vim下的自动补全功能

    linux-python在vim下的自动补全功能 安装配置: wget https://github.com/rkulla/pydiction/archive/master.zipunzip -q m ...

  7. SVN代码管理发布

    1.svn的独立模式应用 2.svn钩子的应用(例如:代码提交前的文件格式限制,大小限制,代码发布svn成功后的备份等等) 3.大型企业的代码发布流程 有一些制度流程.逻辑方案 4.业务变更管理

  8. 如何永久关闭选项"Tools > Close Other Forms"

    http://www.cnblogs.com/quanweiru/archive/2013/03/30/2990945.html Oracle EBS里Tools>Close Other For ...

  9. 2.启动MySql服务

    windows10下启动mysql服务出现服务名无效的原因及解决方法 问题原因:mysql服务没有安装. 解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld -install ...

  10. ThreadLocal实现线程级上下文

    一.ThreadLocal测试 package com.junge.threadlocal.context; /** * @author Administrator * */ public class ...