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

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 创建   》》》》  然后选择下面的两个,amazonSANDBOX最后点击右下角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(400).json("没有任何数据存在")
        }
        return res.json(user)
    }).catch(err => {
        return res.status(404).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(400).json("没有任何数据存在")
        }
        return res.json(user)
    }).catch(err => {
        return res.status(404).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(400).json("数据不存在");
      }
     res.json(user);
    })
    .catch(err => {
      return res.status(404).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(404).json(err)
    })
})

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

 

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

 

posted @ 2018-12-30 00:38 小周sri的码农 阅读(...) 评论(...) 编辑 收藏