• 使用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更上技术更上一层楼。

  • 相关阅读:
    [ACM]HDU Problem 2000 + Java
    [测试开发面试]zyb面试题总结
    [ACM]HDU Problem 1001 + Java
    [ACM]HDU Problem 1002 + Java
    [ACM]HDU Problem 1000 + Java
    [Intellij Idea]激活与配置
    [Android开发]合集(随时更新)
    [Android开发]前端样式设计合集(随时更新)
    [Android开发]emulator无法启动的问题
    [Intellij Idea] IDE使用技巧帖集合(随时更新)
  • 原文地址:https://www.cnblogs.com/zhoulifeng/p/10197816.html
Copyright © 2020-2023  润新知